2013-01-24 46 views
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

這裏先尺寸*是正確的。

我錯過了什麼嗎?

+0

我試着用_wcstoui64()代替V_UIXX宏,但仍然沒有運氣。這給了我與V_UIXX宏完全相同的值。 –

回答

0

設置區域設置(標準::區域設置(「」))在節目的開始解決問題。