描述
IWbemClassObject.PutMethod用于创建一个方法。仅当当前对象是CIM类定义时才支持此调用。指向CIM实例的IWbemClassObject指针不提供方法操作。
用户无法创建名称以下划线开头或结尾的方法。这是为系统类和属性保留的。
C++ 语法
HRESULT PutMethod( [in] LPCWSTR wszName, [in] LONG lFlags, [in] IWbemClassObject *pInSignature, [in] IWbemClassObject *pOutSignature ); |
PowerBASIC 语法
METHOD PutMethod ( _ BYREF wszName AS WSTRINGZ, _ BYVAL lFlags AS LONG, _ BYVAL pInSignature AS IWbemClassObject, _ BYVAL pOutSignature AS IWbemClassObject _ ) AS LONG |
参数
wszName
创建的方法名称。
lFlags
保留。该参数必须为0(零)。
pInSignature
指向__Parameters系统类的副本的指针,其中包含该方法的in参数。如果设置为NOTHING,则忽略此参数。
pOutSignature
指向包含对象的输出参数的__Parameters系统类的副本的指针。如果设置为NOTHING,则忽略此参数。
返回值
此方法返回一个HRESULT,表示方法调用的状态。下表列出了HRESULT中包含的值。
退货代码 |
描述 |
WBEM_S_NO_ERROR |
通话成功。 |
WBEM_E_INVALID_ DUPLICATE_PARAMETER |
在pInSignature和pOutSignature参数对象中指定的[in, out]方法参数具有不同的限定符。 |
WBEM_E_INVALID_PARAMETER |
一个或多个参数无效。 |
WBEM_E_MISSING_PARAMETER_ID |
任何缺少ID限定词的规范的方法参数(in / out)。 |
WBEM_E_NONCONSECUTIVE_ PARAMETER_IDS |
分配给方法参数而不是连续的或不在0(零)开始的ID系列。 |
WBEM_E_PARAMETER_ ID_ON_RETVAL |
方法的返回值具有ID限定符。 |
WBEM_E_PROPAGATED_METHOD |
尝试重用父类中现有的方法名称,并且签名不匹配。 |
备注
对于一种方法,in和out参数被描述为IWbemClassObject对象中的属性。
例如,考虑以下方法:
Class MyClass{
[key] string KeyVal;
sint32 PropVal;
sint32 ExampleMethod([in] sint32 Param1, [in] uint32 Param2,
[out] string Param3);
HRESULT ReturnValue;
};
在前面的例子中,该类有一个方法。要以编程方式创建方法,用户使用pInSignature参数调用pInSignature参数,该参数指向系统类__Parameters的副本,其中包含两个属性:参数1和参数2.pOutSignature指向系统类__Parameters的副本,其中包含两个属性:参数3和ReturnValue.
pOutSignature指向的对象的ReturnValue属性确定方法返回类型。如果pOutSignature设置为NULL,则返回类型假定为VOID。
可以通过向pInSignature和pOutSignature参数指向的两个对象添加相同的属性来定义[in/out]参数。在这种情况下,属性共享相同的ID限定符值。
__Parameters类别对象中除ReturnValue之外的每个属性必须有一个ID限定符,一个基于零的数字,用于标识参数的显示顺序。在这个例子中,参数1将为0,参数21和参数32。没有两个参数可以具有相同的ID值,并且不能跳过ID值。如果发生任一情况,IWbemClassObject.PutMethod返回WBEM_E_NONCONSECUTIVE_PARAMETER_IDS。
注意当不再需要这些对象时,主叫方必须在pInSignature和pOutSignature指针上调用IWbemClassObject.Release.
要求
客户 |
需要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。 |