2009-10-26 2 views
2

Есть ли способ определить, нацелена ли операционная система Windows CE на ARMV4 или ARMV4I или ARMV4T.Определите во время выполнения, если операционная система Windows CE построена на конкретном типе процессора (например, ARMV4/ARMV4I/ARMV4T)

Я знаю, что API-запрос IsProcessorFeaturePresent() на coredll, насколько я могу судить, он позволяет определить наличие набора команд большого пальца.

То, что я действительно хочу обнаружить, это то, что O/S построен с межсетевым взаимодействием (I в ARMV4I) - без предположений. Использование PF_ARM_THUMB не будет различать ARMV4T и ARMV4I.

Спасибо!

ответ

0

Можете ли вы попробовать API KernelIoControl с IOCTL_PROCESSOR_INFORMATION для получения дополнительной информации о процессоре.

+0

Я проверил этот вызов и на устройстве Windows CE 4.20 (ARMV4 без взаимодействия) структура PROCESSOR_INFO по-прежнему указывает, что устройство поддерживает 16-битные инструкции через PROCESSOR_16BITINSTRUCTION. –

0

Почему вы не можете просто использовать BX LR всегда для функций, к которым можно получить доступ ОС?

Включая межсетевые взаимодействия, Microsoft выполняет задачу ARM для обесценивания архитектуры ARM без взаимодействия. 16-разрядный и 32-разрядный код должны поддерживаться на всех платформах ARM.

Вы можете использовать C++ try/catch для проверки, это функция, которой вам нужны подарки или нет. Это будет работать, если вы можете повысить исключение, используя неподдерживаемую функцию. Но его сложно поднять, чтобы проверить взаимодействие.

 Смежные вопросы

  • Нет связанных вопросов^_^