判斷程式自身是執行32位還是64位
阿新 • • 發佈:2019-01-06
// 在做驅動和應用層通訊時,兩個程式必須都是32位或者64位的。(可能32位和64位的驅動可以通訊,未了解。)
// 但是64位下可以執行32位的程式,導致與驅動的通訊失敗,於是乾脆就加了個判斷自身是否是32位還是64位。
bool IsApp64()
{
int nNum = 0;
int nSize = sizeof(&nNum);
if (nSize == 8)
{
return TRUE;
}
else
{
return false;
}
}
順便附帶一個判斷系統是32位還是64位的介面
bool IsWow64() { static bool bGet = false; static BOOL bIsWow64 = FALSE; if (!bGet) { if (sizeof(PVOID) == 8) bIsWow64 = TRUE; else { typedef BOOL(WINAPI *LPFN_ISWOW64PROCESS)(HANDLE, PBOOL); LPFN_ISWOW64PROCESS fnIsWow64Process = NULL; fnIsWow64Process = (LPFN_ISWOW64PROCESS)::GetProcAddress(::GetModuleHandle(_T("kernel32")), "IsWow64Process"); if (fnIsWow64Process) { if (!fnIsWow64Process(::GetCurrentProcess(), &bIsWow64)) { } } } bGet = TRUE; } return bIsWow64 ? true : false; }