我有 C/C++ 代码问题,其中有 WMI 查询检索 Win32_DiskDrive 的实例并获取其 Size 属性。该属性被检索为 Variant 类型,然后我必须将其转换为失败的 UINT64 类型。
如果我按原样打印变量 wchar 值,它会打印出来。但是如果我打印任何 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* 的第一个尺寸是正确的。
我在这里错过了什么?