2010/8/22:本掲示板は閲覧専用です。データが一部破損しておりますがご了承ください。
  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃ホーム  
405 / 2351 ←次へ | 前へ→

【1969】Re:プログラムの質問
←back ↑menu ↑top forward→
 ひよひよ  - 06/4/9(日) 22:50 -

引用なし
パスワード
   ▼冬の目覚めさん:
>はじめまして。
はじめまして。

>プログラムでどうしても分からなかったので場違いですがここで質問させていただいてよろしいでしょうか?
>もしだめなら削除します。
いえいえ全く問題ないです。

>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 判定に参考になるかと思います。

以上そのものズバリではありませんが、参考にしていただければ幸いです。
327 hits

【1968】プログラムの質問 冬の目覚め 06/4/9(日) 16:30
【1969】Re:プログラムの質問 ひよひよ 06/4/9(日) 22:50
【1970】Re:プログラムの質問 DULL 06/4/9(日) 23:25

405 / 2351 ←次へ | 前へ→
  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃ホーム  
ページ:  ┃  記事番号:   
51982
(SS)C-BOARD v3.8(とほほ改ver2.1) is Free