描述
IWbemServices.ExecMethod方法执行由CIM对象导出的方法。方法调用被转发到执行它的适当提供者。信息和状态返回给呼叫者,阻塞直到呼叫完成。
方法不是由Windows Management直接实现,而是由方法提供者导出。对于任何给定的CIM类,可用的方法及其参数必须在相关提供者的文档中指定。
有关执行方法的更多信息,请参阅调用方法.
C++ 语法
HRESULT ExecMethod( [in] const BSTR strObjectPath, [in] const BSTR strMethodName, [in] long lFlags, [in] IWbemContext *pCtx, [in] IWbemClassObject *pInParams, [out] IWbemClassObject **ppOutParams, [out] IWbemCallResult **ppCallResult ); |
PowerBASIC 语法
METHOD ExecMethod ( _ BYVAL strObjectPath AS DWORD, _ BYVAL strMethodName AS DWORD, _ BYVAL lFlags AS LONG, _ BYVAL pCtx AS IWbemContext, _ BYVAL pInParams AS IWbemClassObject, _ BYREF ppOutParams AS IWbemClassObject, _ BYREF ppCallResult AS IWbemCallResult _ ) AS LONG |
参数
strObjectPath
有效BSTR包含执行该方法的对象的对象路径。
strMethodName
对象的方法名称。
lFlags
该参数可以设置为0,使其成为同步调用。要使其成为半异步调用,请将LFLAGS设置为WBEM_FLAG_RETURN_IMMEDIATELY,为ppCallResult参数提供有效的指针,此调用将立即返回。有关详细信息,请参阅调用方法.
pCtx
通常为NULL;否则,这是指向可以由提供者执行该方法的IWbemContext对象的指针。必须在相关提供者的文档中指定上下文对象中的值。有关此参数的更多信息,请参阅拨打电话给WMI.
pInParams
如果不需要in-parameters来执行该方法,则可能为NULL。否则,它指向IWbemClassObject,其中包含作为方法执行的入站参数的属性。对象的内容是特定于方法的,是有关提供者的规范的一部分。有关构建输入参数的更多信息,请参阅在C ++中创建参数对象.
ppOutParams
如果不是NULL,则会收到指向出站参数的指针,并返回方法执行的值。该对象的内容是特定于方法的,是有关提供者的规范的一部分。当不再需要时,调用者必须在返回的对象上调用发布.
ppCallResult
如果为NULL,则不使用。如果指定ppCallResult,则必须将其设置为指定为NULL。在这种情况下,调用会立即返回WBEM_S_NO_ERROR。ppCallResult参数接收一个指向新的IWbemCallResult对象的指针,该对象必须轮询才能使用GetCallStatus方法获取方法执行的结果。呼叫的输出参数可通过调用IWbemCallResult.GetResultObject.
返回值
此方法返回一个HRESULT,指示方法调用的状态。下表列出了HRESULT中包含的值。
失败时,您可以从COM函数GetErrorInfo获取任何可用的信息。
如果网络问题导致您失去与Windows Management的远程连接,也可能会返回COM特定的错误代码。
退货代码 |
描述 |
WBEM_E_FAILED |
这表示其他未指定的错误。 |
WBEM_E_INVALID_CLASS |
指定的类无效。 |
WBEM_E_INVALID_PARAMETER |
指定了无效参数。 |
WBEM_E_METHOD_DISABLED |
试图执行标记为[disabled]的方法。 |
WBEM_E_METHOD_NOT_IMPLEMENTED |
试图在任何相关的类中执行未标记[implemented]的方法。 |
WBEM_E_NOT_FOUND |
指定的对象路径无效 |
WBEM_E_PROVIDER_NOT_CAPABLE |
提供程序不支持方法调用。 |
WBEM_E_OUT_OF_MEMORY |
没有足够的内存来完成操作。 |
WBEM_E_SHUTTING_DOWN |
Windows管理服务可能已停止并重新启动。需要新的电话ConnectServer. |
WBEM_E_TRANSPORT_FAILURE |
这表示当前进程和Windows Management之间的远程过程调用(RPC)链接失败。 |
WBEM_E_INVALID_METHOD |
请求的方法不可用。 |
WBEM_E_ACCESS_DENIED |
当前用户未被授权执行该方法。 |
WBEM_E_INVALID_METHOD_PARAMETERS |
此错误是由以下两个原因之一造成的:
所提供的pInParams对象由提供者确定为无效。
strObjPath参数指定了一个没有该方法的[static]限定词的类。 |
WBEM_S_NO_ERROR |
通话成功。 |
备注
如果ppOutParams不为NULL,客户端可以通过检查ppOutParams指向的对象的ReturnValue属性来确定方法的返回值类型。
要求
客户 |
需要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 |
需要Fastprox.dll。 需要Esscli.dll。 需要Framedyn.dll。 需要Ntevt.dll。 需要Stdprov.dll。 需要Viewprov.dll。 需要Wbemcomn.dll。 需要Wbemcore.dll。 需要Wbemess.dll。 需要Wbemsvc.dll。 需要Wmipicmp.dll。 需要Wmidcprv.dll。 需要Wmipjobj.dll。 需要Wmiprvsd.dll。 |