Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WinPE环境下C/C中的变量字符串转换_C_Variant_String Conversion_Winpe - Fatal编程技术网

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

WinPE环境下C/C中的变量字符串转换,c,variant,string-conversion,winpe,C,Variant,String Conversion,Winpe,我有一个C/C++代码问题,其中有一个WMI查询,它检索Win32_DiskDrive的实例并获取其Size属性。该属性作为变量类型检索,然后我必须将其转换为UINT64类型,但该类型失败 如果我按原样打印变量wchar值,它会打印OK。但如果我打印任何UINT表单,它会给我一些乱码值。这是在WinPE环境中,不确定是否会影响任何内容 代码片段是: VariantClear(&varPropVal); hr = pInst->Get(L"Size", // property nam

我有一个C/C++代码问题,其中有一个WMI查询,它检索Win32_DiskDrive的实例并获取其Size属性。该属性作为变量类型检索,然后我必须将其转换为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*是正确的

有什么我遗漏的吗?

在程序开始时设置区域设置(std::locale(“”)可以解决问题。

我也尝试了用_wcstoui64()代替V_UIXX宏,但仍然没有成功。这给了我与V_UIXX宏完全相同的值。