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

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

【1968】プログラムの質問
←back ↑menu ↑top forward→
 冬の目覚め  - 06/4/9(日) 16:30 -

引用なし
パスワード
   はじめまして。
プログラムでどうしても分からなかったので場違いですがここで質問させていただいてよろしいでしょうか?
もしだめなら削除します。

C++、Win32APIでOSを判定したいのですが、Windows XP x64 Editionの判定方法が分かりません。
OSVERSIONINFOEXのどのメンバを元に判定すればいいのでしょうか。
よろしくお願いします。

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

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

【1970】Re:プログラムの質問
←back ↑menu ↑top forward→
 DULL WEB  - 06/4/9(日) 23:25 -

引用なし
パスワード
   ▼冬の目覚めさん:

ここを見る限り環境変数を取得しても判別できそうな気がします。
http://digital.hmx.net/02contents/pc/ia64/zx2000/zx2000_win64.shtml

私は x64 OS(欲しい!)を持っていないので確認できませんが…

GetSystemMetrics()でTabletPCやMEDIACENTERを判別できるんだから
x64とかも判別できれば楽なのになぁ〜っと思います。

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