在Visual c++的WMI中读取int数组属性
Reading uint Array properties inside WMI in Visual C++
我从WMI对象中读取int数组属性有困难。我可以从WMI对象中读取和处理STRING属性。
这是我尝试过的:
VARIANT vtProp;
hr = pclsObj->Get(L"VendorSpecific", 0, &vtProp, 0, 0);// Uint8
这就是获取安全数组第一个元素的方法。
SAFEARRAY* safearray = vtProp.parray;
CComBSTR str;
LONG i = 0;
SafeArrayGetElement(safearray, &i, &str);
更新:一个更通用的解决方案:
SAFEARRAY* safearray = vtProp.parray;
VARTYPE vType;
SafeArrayGetVartype(safearray, &vType);
long bound = safearray ->rgsabound[0].cElements;
for(long i = 0; i < bound; ++i)
{
VARIANT value;
SafeArrayGetElement(safearray, &i, &value);
switch(vType)
{
case VT_BSTR:
// use value.bstrVal
break;
case VT_UI8:
// use value.ullVal
break;
}
}
VARIANT vtProp;
hr = pclsObj->Get(L"VendorSpecific", 0, &vtProp, 0, 0);// Uint8
long lUpper = 0;
long lLower = 0;
hr = SafeArrayGetUBound(V_ARRAY(&vtProp),1,&lUpper);
hr = SafeArrayGetLBound(V_ARRAY(&vtProp),1,&lLower);
long lNumOfElems = lUpper-lLower+5;
BYTE HUGEP *plongArray;
BYTE b;
hr=SafeArrayAccessData(V_ARRAY(&vtProp), (void**)&plongArray);
b = plongArray[0];
相关文章:
- 为什么我可以从C++文件中读取 int 值,但不能浮点?
- 通过 char* 缓冲区读取 int 的行为是不同的,无论是正数还是负数
- 从带有 std::ifstream::read() 的文件中读取 int 遍历 char * 二进制数据
- 从 ifstream 读取 int 到 2-D 动态数组
- 使用 c++ 时从二进制文件中读取 int 不正确
- C++ 从文件中读取 int,每个数字用逗号分隔
- 使用iStream从文件中读取int数据
- openssljava到c++读取int问题
- 在 c++ 中从向量中读取 int 值
- 从第 3 位开始读取 int 的最快方法?
- C++读取 int 和字符串,可能同时读取
- 在C++中一次一行地从文本文件中读取int(好的字符,然后转换)时出现问题
- 读取int中的数字并对其进行计数
- 从十六进制数组读取 Int
- 从STDIN读取int时的奇怪行为
- c/c++scanf/cin从多行读取int
- 当循环失败时,当读取int和字符串C++时
- 如何在写入/读取int值时触发函数调用
- 从istream中读取int,检测溢出
- 每行读取int并显示百分比