2017-03-16 12 views
-1

自分のプログラムが実行されているシステムがアームベースかc/C++を使用していないかどうかを確認するにはどうすればよいですか?Windows APIを使用してARMを使用しているかどうかを確認するにはどうすればよいですか?

+1

CまたはC++を使用している場合、コンパイラから通知されます。 – Dai

+0

ランタイム@WeatherVane – theprogrammer

+0

ランタイムを実行することは本当に必要ですか?あなたはすでにコンパイル時にこれを知っていませんか?その情報はコンパイル時からランタイムに変わることはなく、少なくとも通常は変更されません。 – user3528438

答えて

2

は、ここでは、

#include <stdio.h> 
#include <windows.h> 

int main(void) 
{ 

    SYSTEM_INFO SystemInfo; 
    GetSystemInfo(&SystemInfo); 

    if(SystemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_ARM) 
    { 
     // System's processor is ARM based 
    } 

    return 0; 
} 

編集、探しているものだ:アンダースが示唆したように、より良いと正確な結果を得るためGetNativeSystemInfoを使用しています。

+0

SYSTEM_INFOとは何ですか?それは新しいデータ型ですか? – theprogrammer

+2

Windows Dev Center:[ハードウェア情報の入手](https://msdn.microsoft.com/en-us/library/windows/desktop/ms724423(v = vs.85).aspx) –

+0

'SYSTEM_INFO'は構造体です。 'typedef struct _SYSTEM_INFO {..} SYSTEM_INFO'と定義されています。 –

0

ARM用にコンパイルするかどうかを知りたい場合は、_M_ARMが定義されているかどうかを確認できます。

あなたは、x86アプリケーションであり、あなたは、あなたが実行しているかどうかを知りたいなら、あなたはGetNativeSystemInfoを呼び出し、wProcessorArchitectureフィールドをチェックします(実際に可能まだしかしmaybe soonない?)ARMマシン上でエミュレート。最も可能性が高い嘘とx86のアプリがARM上で実行したときにPROCESSOR_ARCHITECTURE_INTELを返すために起こっているので、他の回答で提案されているように

あなたはGetSystemInfoを呼び出すべきではありません。

関連する問題