IWbemClassObject::Get 方法 (wbemcli.h)

IWbemClassObject::Get 方法检索指定的属性值(如果存在)。 此方法还可以返回 系统属性

语法

HRESULT Get(
  [in]            LPCWSTR wszName,
  [in]            long    lFlags,
  [out]           VARIANT *pVal,
  [out, optional] CIMTYPE *pType,
  [out, optional] long    *plFlavor
);

参数

[in] wszName

所需属性的名称。 它被视为只读。

[in] lFlags

保留。 此参数必须为 0 (零) 。

[out] pVal

成功后,为此参数分配限定符的正确类型和值,并在 pVal 上调用 VariantInit 函数。 当不需要值时,调用方负责在 pVal 上调用 VariantClear。 如果出现错误,则不会修改 pVal 指向的值。 如果将未初始化的 pVal 值传递给方法,则调用方必须检查该方法的返回值,并且仅在该方法成功时调用 VariantClear

[out, optional] pType

可以为 NULL。 如果不为 NULL,则接收属性的 CIM 类型,即 CIM 类型的常量之一,例如 CIM_SINT32CIM_STRING等。 有关这些值的详细信息,请参阅 CIMTYPE_ENUMERATION。 这表示打包到 VARIANT 中的属性值的 CIM 语义。

[out, optional] plFlavor

可以为 NULL。 如果不是 NULL,则指向的 LONG 值接收有关属性来源的信息。 有关详细信息,请参阅 限定符风格WBEM_FLAVOR_TYPE

WBEM_FLAVOR_ORIGIN_SYSTEM

属性是标准系统属性。

WBEM_FLAVOR_ORIGIN_PROPAGATED

仅适用于类。 属性继承自父类。

仅适用于实例。 属性继承自父类,但尚未在实例级别修改。

WBEM_FLAVOR_ORIGIN_LOCAL

仅适用于类。 属性属于派生子类。

仅适用于实例。 属性在实例级别修改,即提供了值,或者添加了或修改了限定符。

返回值

此方法返回指示方法调用状态的 HRESULT。 以下列表列出了 HRESULT 中包含的值。 有关常规 HRESULT 值,请参阅 系统错误代码

注解

如果属性的类型是对象路径、日期/时间字符串或其他特殊类型,则 VARIANT 中返回的值不包含足够的信息来标识真实类型。 pvtType out 参数指示这一点。

若要获取属性的通用信息模型 (CIM) 类型的字符串形式,必须获取该属性的 IWbemQualifierSet 指针,并检索 Cimtype 限定符。 该限定符是 CIM 类型的字符串形式,例如 sint32CIM_SINT32,后者是一个数值常量。

注意 使用 IWbemClassObject::SpawnInstance 创建新对象时,请务必注意,在将对象写入 Windows Management Instrumentation (WMI) 之前,不会设置某些系统属性。 在所有情况下, IWbemClassObject::Get 成功访问请求的系统属性,但返回的 VARIANT 可能包含 VT_NULL
 

示例

有关使用 C++ 和 WMI 进行查询的扩展讨论和示例,请参阅 CodeProject 上的 在 C++ 中生成 WMI 查询

下面的 C++ 示例演示如何使用系统属性__CLASS从对象检索 CIM 类名称 代码需要以下 #include 语句和引用才能编译。
#include <iostream>
using namespace std;
#include <wbemidl.h>
#pragma comment(lib, "wbemuuid.lib")
//Assumes that pObj is defined as a pointer
// to an IWbemClassObject object.

VARIANT v;
BSTR strClassProp = SysAllocString(L"__CLASS");
HRESULT hr;
hr = pObj->Get(strClassProp, 0, &v, 0, 0);
SysFreeString(strClassProp);

// check the HRESULT to see if the action succeeded.

if (SUCCEEDED(hr) && (V_VT(&v) == VT_BSTR))
{
    wprintf(L"The class name is %s\n.", V_BSTR(&v));
}
else
{
    wprintf(L"Error in getting specified object\n");
}
VariantClear(&v);



要求

要求
最低受支持的客户端 Windows Vista
最低受支持的服务器 Windows Server 2008
目标平台 Windows
标头 wbemcli.h (包括 Wbemidl.h)
Library WbemUuid.lib
DLL CIMWin32.dll;Esscli.dll;Fastprox.dll;FrameDyn.dll;FrameDynOS.dll;Krnlprov.dll;Ncprov.dll;Wbemcore.dll;Wbemess.dll;Wmipiprt.dll

另请参阅

IWbemClassObject

IWbemClassObject::GetPropertyQualifierSet

WMI 限定符

WMI 系统类

WMI 系统属性