我无法从 WMI 对象读取 uint ARRAYS 属性。我可以从 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;
}
}
关于c++ - 在 Visual C++ 中读取 WMI 中的 uint 数组属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22636639/