gpt4 book ai didi

C++ 从本地计算机获取 WMI 数组数据

转载 作者:搜寻专家 更新时间:2023-10-31 01:05:29 28 4
gpt4 key购买 nike

我在使用 C++ 从 WMI 类检索数组数据时遇到问题。

在以下链接中,http://msdn.microsoft.com/en-us/library/aa390423(v=vs.85).aspx ,示例的第 7 步向我们展示了如何检索运行的 wmi 查询的字符串值。但是,当查询返回的值是 uint16 数组时,我目前面临一个问题。

例如。
查询:“从 Win32_SystemEnclosure 中选择机箱类型”


结果:
_属:2
_CLASS:Win32_SystemEnclosure
_父类(super class):
_王朝:
_关系路径:
_PROPERTY_COUNT:1
_推导:{}
_服务器:
_ namespace :
_路径:
机箱类型:{3}

请问在这种情况下,我如何实际处理结果以从数组中检索 ChassisType 的整数值?谢谢!

最佳答案

要从 WMI 属性访问数组值,您可以使用 SafeArrayGetElement , SafeArrayGetLBoundSafeArrayGetUBound方法。

试试这个例子

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;
}

关于C++ 从本地计算机获取 WMI 数组数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22525890/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com