c++ - 在 Visual C++ 中读取 WMI 中的 uint 数组属性

标签 c++ windows visual-studio wmi

我无法从 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/

相关文章:

c++ - 提供维度后 boost::extent 对象的类型是什么?

c++ - QT设计器背景图片问题

c++ - 我怎样才能知道我的源代码的编译日期?

windows - 如何在 Windows 上构建 GDB

c# - 轻量级独立 C# 调试器

c# - 如何在其他电脑上打包安装Windows 10应用

c++ - 在 C++ 字符中存储 unicode

python - 在 Python 中确定计算机是否通过 WiFi 网络或以太网电缆连接到互联网

windows - 在 Windows 中,为什么有些字符是非法的?

c++ - MinGW64 - Unicode 源文件错误?