c++从本地计算机获取WMI数组数据
C++ Getting WMI Array Data from the Local Computer
我在使用c++从WMI类检索数组数据时面临问题。
在下面的链接http://msdn.microsoft.com/en-us/library/aa390423(v=vs.85).aspx中,示例的第7步向我们展示了如何检索运行的wmi查询的字符串值。然而,当从查询返回的值是uint16数组时,我目前面临一个问题。
。
查询:"Select chassistype from Win32_SystemEnclosure"
结果:
_属:2
_CLASS: Win32_SystemEnclosure
_ 超类:
_DYNASTY:
_ RELPATH:
_PROPERTY_COUNT: 1
_ 派生:{}
_SERVER:
_ 名称空间:
_PATH:
ChassisTypes: {3}
请问在这种情况下,我如何实际处理结果以从数组中检索ChassisType的整数值?谢谢你!
要从WMI属性访问数组值,您可以使用SafeArrayGetElement
, SafeArrayGetLBound和SafeArrayGetUBound方法。
试试这个示例
VARIANT vtProp;
hr = pclsObj->Get(L"ChassisTypes", 0, &vtProp, 0, 0);// Uint16
if (!FAILED(hr))
{
if ((vtProp.vt==VT_NULL) || (vtProp.vt==VT_EMPTY))
wcout << "ChassisTypes : " << ((vtProp.vt==VT_NULL) ? "NULL" : "EMPTY") << endl;
else
if ((vtProp.vt & VT_ARRAY))
{
wcout << "ChassisTypes : " << endl;
long lLower, lUpper;
UINT32 Element = NULL;
SAFEARRAY *pSafeArray = vtProp.parray;
SafeArrayGetLBound(pSafeArray, 1, &lLower);
SafeArrayGetUBound(pSafeArray, 1, &lUpper);
for (long i = lLower; i <= lUpper; i++)
{
hres = SafeArrayGetElement(pSafeArray, &i, &Element);
wcout << Element<< endl;
}
SafeArrayDestroy(pSafeArray);
}
VariantClear(&vtProp);
pclsObj->Release();
pclsObj=NULL;
}
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '