WinPE 环境中 C/C 中的变体字符串转换



>我有 C/C++ 代码问题,其中有 WMI 查询检索Win32_DiskDrive实例并获取其 Size 属性。此属性作为变体类型检索,然后我必须将其转换为失败的 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 %un", V_BSTR(&varPropVal),
                                           V_UI4(&varPropVal),
                                           V_UI8(&varPropVal),
                                           V_UINT(&varPropVal));
    diskInfo->size = V_UI8(&varPropVal);
}

日志语句的输出: 磁盘大小:13440107520 4631112 4631112 4631112

这里打印为 wchar* 的第一个尺寸是正确的。

我在这里错过了什么吗?

在程序开始时设置语言环境(std::locale("))可以解决问题。

相关内容

  • 没有找到相关文章

最新更新