描述
IWbemClassObject.Get方法检索指定的属性值(如果存在)。此方法也可以返回系统属性。
C++ 语法
HRESULT Get( [in] LPCWSTR wszName, [in] LONG lFlags, [out] VARIANT *pVal, [out, optional] CIMTYPE *pvtType, [out, optional] LONG *plFlavor ); |
PowerBASIC 语法
METHOD Get ( _ BYREF wszName AS WSTRINGZ, _ BYVAL lFlags AS LONG, _ BYREF pVal AS VARIANT, _ BYREF pvtType AS LONG, _ BYREF plFlavor AS LONG _ ) AS LONG |
参数
wszName
所需属性的名称。它被视为只读。
lFlags
保留。该参数必须为0(零)。
pVal
成功后,为该限制符分配正确的类型和值,并在PVAL上调用VariantInit函数。如果有错误,PVAL指向的值不会被修改。
pvtType
可以为NULL。如果它不为NULL,它将接收属性的CIM类型,即CIM类型常量之一,如CIM_SINT32,CIM_STRING等等。有关这些值的更多信息,请参阅CIMTYPE_ENUMERATION.这表示包含在VARIANT中的属性值的CIM语义。
plFlavor
可以为NULL。如果不为NULL,则指向的LONG值将接收有关该属性的来源的信息。
值 |
含义 |
WBEM_FLAVOR_ORIGIN_SYSTEM |
该属性是一个标准的系统属性。 |
WBEM_FLAVOR_ORIGIN_PROPAGATED |
仅限课程该属性从父类继承。 |
WBEM_FLAVOR_ORIGIN_LOCAL |
仅限课程该属性属于派生的子类。 |
WBEM_FLAVOR_ORIGIN_PROPAGATED |
仅适用于实例。该属性从父类继承,但在实例级别尚未修改。 |
WBEM_FLAVOR_ORIGIN_LOCAL |
仅适用于实例。该属性在实例级别—修改,即已提供值,或修饰符已添加或修改。 |
返回值
此方法返回一个HRESULT,指示方法调用的状态。下表列出了HRESULT中包含的值。
退货代码 |
描述 |
WBEM_E_FAILED |
有一般的失败。 |
WBEM_E_INVALID_PARAMETER |
一个或多个参数无效。 |
WBEM_S_NO_ERROR |
呼叫成功。 |
WBEM_E_NOT_FOUND |
找不到指定的属性。 |
WBEM_E_OUT_OF_MEMORY |
没有足够的内存来完成操作。 |
示例代码
以下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);
备注
如果属性的类型是对象路径,日期/时间字符串或其他特殊类型,则VARIANT中返回的值不包含足够的信息来标识真实类型。pvtTypeda输出参数指示。
要获取属性的公共信息模型(CIM)类型的字符串形式,必须获取属性的IWbemQualifierSet指针,并检索Cimtype限定符。该限定符是CIM类型的字符串形式,例如SINT32对CIM_SINT32,它是一个数字常量。
注意使用IWbemClassObject.SpawnInstance创建新对象时,请注意,在将对象写入Windows管理规范(WMI)之前,不会设置某些系统属性。在所有情况下,IWbemClassObject.Get成功访问请求的系统属性,但返回的VARIANT可能包含VT_NULL。
要求
客户 |
需要Windows Vista,Windows XP,Windows 2000 Professional,Windows NT Workstation 4.0 SP4及更高版本,Windows Me,Windows 98或Windows 95。 |
服务器 |
需要Windows Server 2008,Windows Server 2003,Windows 2000 Server或Windows NT Server 4.0 SP4及更高版本。 |
头 |
在Wbemcli.inc中声明。 |
DLL |
需要Cimwin32.dll。 需要Esscli.dll。 需要Evntrprv.dll。 需要Fastprox.dll。 需要Framedyn.dll。 需要Krnlprov.dll。 需要Ncprov.dll。 需要Wbemcore.dll。 需要Wbemess.dll。 需要Wmipiprt.dll。 |