Вопрос о функции IsWow64Process - PullRequest
0 голосов
/ 24 марта 2020

При поиске того, как определить, является ли процесс 64-битным или 32-битным процессом, я увидел много предложений по использованию функции IsWow64Process . В документации я видел этот фрагмент об установленном значении:

Указатель на значение, установленное в значение ИСТИНА, если процесс выполняется под WOW64 на процессоре Intel64 или x64. Если процесс выполняется под 32-битным Windows, значение устанавливается в FALSE. Если процесс представляет собой 32-разрядное приложение, запущенное под ARM в 64-разрядном Windows 10, значение устанавливается в FALSE. Если процесс представляет собой 64-разрядное приложение, работающее под 64-разрядным Windows, значение также устанавливается на ЛОЖЬ.

Если посмотреть на это последнее предложение, то звучит так, как будто некоторые 64-разрядные приложения установить тот же флаг, что и в 32-битных приложениях! Действительно ли это так, и если да, то как я могу определить, является ли процесс действительно 32-разрядным или 64-разрядным?

1 Ответ

2 голосов
/ 24 марта 2020

Непосредственно с веб-сайта Microsoft Docs:

IsWow64Process2 обеспечивает улучшенную прямую замену IsWow64Process.

Также:

IsWow64Process2 удаляет неоднозначность, присущая нескольким средам WOW путем явного возврата как архитектуры хоста, так и гостя для данного процесса.

С помощью этой новой функции путаница устраняется, поскольку она возвращает архитектуру целевого процесса И архитектура машины. Вы можете использовать эти значения, чтобы затем проверить, действительно ли 32-разрядный процесс выполняется на 64-разрядном процессоре или иным образом.

Это ссылка: IsWow64Process2


(Спасибо @ Remy Lebeau за разъяснения) Однако, поскольку эта функция недоступна в версиях Windows ранее, чем Windows 10 версии 1511, вы можете использовать GetSystemInfo или GetNativeSystemInfo (Программы WOW64) для определения архитектуры процессора. Затем вы можете использовать информацию, возвращаемую из IsWow64Process, чтобы определить архитектуру целевого процесса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...