Как определить, является ли процесс 32 или 64 бит?
учитывая дескриптор процесса Windows, как я могу определить, используя код C++, является ли процесс 32 бит или 64 бит?
2 ответов
Если у вас есть дескриптор модуля, то вы можете сделать это:
IMAGE_NT_HEADERS * headers = ImageNtHeader(handle);
if ( headers->FileHeader.Machine == IMAGE_FILE_MACHINE_I386 )
{
//module is x86
}
else if ( headers->FileHeader.Machine == IMAGE_FILE_MACHINE_AMD64 )
{
//module is x64
}
Я принял помощь от мой собственный ответ.
если у вас есть дескриптор процесса, использовать IsWow64Process()
.
если IsWow64Process()
сообщает true, процесс 32-разрядный работает на 64-разрядной ОС.
если IsWow64Process()
сообщает false (или не существует в kernel32.dll
), то процесс либо 32-разрядный работает на 32-разрядной ОС, либо 64-разрядный работает на 64-разрядной ОС. Чтобы узнать, является ли сама ОС 32-разрядной или 64-разрядной, используйте GetNativeSystemInfo()
(или GetSystemInfo()
если GetNativeSystemInfo()
недоступен в kernel32.dll
).