Определите во время выполнения, построена ли операционная система Windows CE для определенного типа процессора (например, ARMV4 / ARMV4I / ARMV4T) - PullRequest
2 голосов
/ 26 октября 2009

Есть ли способ определить, нацелена ли операционная система Windows CE на ARMV4 или ARMV4I или ARMV4T.

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

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

Спасибо!

Ответы [ 2 ]

0 голосов
/ 02 ноября 2009

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

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

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

0 голосов
/ 27 октября 2009

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

...