0

私は vc++ のハードウェア機能に取り組んでいます。

私はこれを取得するために取り組んでいますsiSysInfo.dwOemIdが、dword is incompatibleエラーが私を止めています

私も試してみstrcat(text,(char*)siSysInfo.dwOemId)ましたが、役に立ちませんでした。

これが私のコードです

SYSTEM_INFO siSysInfo;

GetSystemInfo(&siSysInfo);

char parent[1000] = {""};
char text[700] = {""};
char str[700] = {""};


strcat(text, "<b><font color=\"yellow\"> ");

strcat(text,(char*)siSysInfo.dwOemId);

strcat(text, str);
strcat(text, "</font></b>");

AddLOG_message(text, 0, 0);

#pragma MESSAGE("TODO: testing")

コンソール アプリケーションでは、printf(" OEM ID: %u\n", siSysInfo.dwOemId); として機能します。

ただし、通常のアプリケーションでは --- strcat(text,(char*)siSysInfo.dwOemId); 動かない。

4

2 に答える 2

1

はいwordは、システムバス、AFAIKを介して渡すことができるデータビットの量の尺度です。したがって、16 ビット プラットフォームの場合は 16 ビットになり、64 ビット プラットフォームの場合は 64 ビットになるため、互換性がありません。

そして、それに関しては、ゼロの終わりがないため、 of などを使用する必要があるとstrcat(text,(char*)siSysInfo.dwOemId)確信しています。dwOemIdstrncat(text, (char*)siSysInfo.dwOemId, sizeof(DWORD))

とにかく、これは文字列ではないようです。あなたはこのサンプルに従っていると思いますが、ラインに目を向けるべきですprintf(" OEM ID: %u\n", siSysInfo.dwOemId)。ご覧のとおり、%u書式設定 ( unsigned int) を使用しています。

MSDNによると

dwOemId

An obsolete member that is retained for compatibility.

アプリケーションは、ユニオンの wProcessorArchitecture ブランチを使用する必要があります。

したがって、その行は次のようになります。

switch(siSysInfo.wProcessorArchitecture)
{
case PROCESSOR_ARCHITECTURE_AMD64: strcat(text, "x64"); break;
case PROCESSOR_ARCHITECTURE_ARM: strcat(text, "ARM"); break;
case PROCESSOR_ARCHITECTURE_IA64: strcat(text, "ia64"); break;
case PROCESSOR_ARCHITECTURE_INTEL: strcat(text, "x86"); break;
case PROCESSOR_ARCHITECTURE_UNKNOWN: strcat(text, "unknown"); break;
default:
    /* code should be updated to include updates 
     * in wProcessorArchitecture enumeration */
    strcat(text, "unidentified"); break;
}
于 2013-01-02T06:58:51.363 に答える
-2

解決:

SYSTEM_INFO siSysInfo;

GetSystemInfo(&siSysInfo);

unsigned char instedof char を使用してください。\n

以下の例に従ってください。

unsigned char text[700] = {""};

strcat(テキスト,(char*)siSysInfo.dwOemId);

以下のリンクを参照してください。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724423(v=vs.85).aspx

于 2013-01-02T07:36:44.110 に答える