Windowsプロセスハンドルが与えられた場合、C ++コードを使用して、プロセスが32ビットか64ビットかをどのように判断できますか?
13952 次
5 に答える
45
プロセス ハンドルがある場合は、 を使用しますIsWow64Process()
。
true と報告された場合IsWow64Process()
、プロセスは 64 ビット OS で実行されている 32 ビットです。
IsWow64Process()
が false (または に存在しない) を報告する場合kernel32.dll
、プロセスは 32 ビット OS 上で 32 ビット実行されているか、64 ビット OS 上で 64 ビット実行されています。OS 自体が 32 ビットか 64 ビットかを知るには、GetNativeSystemInfo()
(またはGetSystemInfo()
ifGetNativeSystemInfo()
が で使用できない) を使用しますkernel32.dll
。
于 2013-01-06T20:58:25.040 に答える
0
モジュールへのハンドルがある場合、これを行うことができます:
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
}
私は自分の答えから助けを得ました。
于 2013-01-06T16:43:07.250 に答える