| 
    
     |  | ▼冬の目覚めさん: >はじめまして。
 はじめまして。
 
 >プログラムでどうしても分からなかったので場違いですがここで質問させていただいてよろしいでしょうか?
 >もしだめなら削除します。
 いえいえ全く問題ないです。
 
 >C++、Win32APIでOSを判定したいのですが、Windows XP x64 Editionの判定方法が分かりません。
 >OSVERSIONINFOEXのどのメンバを元に判定すればいいのでしょうか。
 >よろしくお願いします。
 
 CrystalMark/CPUID では、
 
 typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE hProcess,PBOOL Wow64Process);
 
 BOOL IsWow64(VOID)
 {
 BOOL bIsWow64 = FALSE;
 LPFN_ISWOW64PROCESS fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(GetModuleHandle("kernel32"),"IsWow64Process");
 if (NULL != fnIsWow64Process)
 {
 if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64))
 {
 // handle error
 bIsWow64 = FALSE;
 }
 }
 return bIsWow64;
 }
 
 バイナリが32bitの場合、上記の関数でWOW64上で動作しているかチェックしています。(バイナリがx64の場合は言うまでもなくx64 Editionなんで特に何もしていません)
 
 この関数は、CrystalCPUID のソースコード内の
 SysInfo/pcidll.c に含まれております。
 common/GetOSInfo.cpp も OS 判定に参考になるかと思います。
 
 以上そのものズバリではありませんが、参考にしていただければ幸いです。
 
 |  |