0
我有C/C++代碼的問題,其中有WMI查詢以檢索Win32_DiskDrive的實例,並獲取其Size屬性。這個屬性被檢索爲Variant類型,然後我必須將其轉換爲失敗的UINT64類型。變串轉換中的WinPE環境
如果我按照原樣打印變體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打印爲WCHAR 4631112 4631112 4631112
這裏先尺寸*是正確的。
我錯過了什麼嗎?
我試着用_wcstoui64()代替V_UIXX宏,但仍然沒有運氣。這給了我與V_UIXX宏完全相同的值。 –