Win32_DiskDrive のインスタンスを取得し、その Size プロパティを取得する WMI クエリがある C/C++ コードの問題があります。このプロパティは Variant 型として取得され、失敗している UINT64 型に変換する必要があります。
バリアントの wchar 値をそのまま印刷すると、OK と印刷されます。しかし、UINT フォームのいずれかを印刷すると、文字化けした値が得られます。これは WinPE 環境にあり、何かに影響するかどうかはわかりません。
コード スニペットは次のとおりです。
VariantClear(&varPropVal);
hr = pInst->Get(L"Size", // property name
0L, // Reserved, must be zero.
&varPropVal, // property value returned.
NULL, // CIM type not needed.
NULL); // Flavor not needed.
if(hr == WBEM_S_NO_ERROR)
{
printf("Disk size: %S %llu %llu %u\n", V_BSTR(&varPropVal),
V_UI4(&varPropVal),
V_UI8(&varPropVal),
V_UINT(&varPropVal));
diskInfo->size = V_UI8(&varPropVal);
}
ログ ステートメントの出力: ディスク サイズ: 13440107520 4631112 4631112 4631112
ここで wchar* として出力される最初のサイズは正しいものです。
ここで見逃しているものはありますか?