在运行时确定 Windows CE 操作系统是否是针对特定处理器类型(例如 ARMV4/ARMV4I/ARMV4T)构建的
有没有办法确定 Windows CE 操作系统是否针对 ARMV4、ARMV4I 或 ARMV4T。
我知道 coredll 上的 IsProcessorFeaturePresent() API 调用,但据我所知,它只允许您确定拇指指令集是否存在。
我真正想要检测的是操作系统是否是通过互通构建的(ARMV4I 中的 I) - 不做任何假设。使用 PF_ARM_THUMB 不会区分 ARMV4T 和 ARMV4I。
谢谢!
Is there a way to determine if a Windows CE operating system is targeted against ARMV4 or ARMV4I or ARMV4T.
I am aware of the IsProcessorFeaturePresent() API call on coredll however as far as I can tell, it only allows you to determine the presence of the thumb instruction set.
What I really want to detect is if the O/S is built with interworking (the I in ARMV4I) - without making assumptions. Using PF_ARM_THUMB will not distinguish between ARMV4T and ARMV4I.
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以尝试使用 IOCTL_PROCESSOR_INFORMATION 的 KernelIoControl API 来获取有关处理器的更多信息。
Can you try KernelIoControl API with IOCTL_PROCESSOR_INFORMATION for more information about the processor.
为什么不能简单地使用
BX LR
来实现操作系统可以访问的函数?您可以使用 C++ try/catch 来检查您是否需要提供功能。如果您可以通过使用不受支持的功能引发异常,那么这将起作用。但很难提高它来检查互通。
Why can't you simple use
BX LR
always for functions, which can be accessed by OS?You can use C++ try/catch to check, is feature you need presents or not. This will work, if you can raise exception by using unsupported feature. But it's hard to raise it to check interworking.