IWbemServices::D eleteInstance 方法 (wbemcli.h)
IWbemServices::D eleteInstance 方法删除当前命名空间中现有类的实例。
语法
HRESULT DeleteInstance(
[in] const BSTR strObjectPath,
[in] long lFlags,
[in] IWbemContext *pCtx,
[out] IWbemCallResult **ppCallResult
);
参数
[in] strObjectPath
包含要删除的实例的对象路径的有效 BSTR 。
[in] lFlags
以下值之一有效。
WBEM_FLAG_RETURN_IMMEDIATELY
此标志导致此为半同步调用。 有关详细信息,请参阅调用方法。
[in] pCtx
通常为 NULL。 否则,这是指向 IWbemContext 对象的指针,该对象可能由正在删除实例的提供程序使用。 上下文对象中的值必须在相关提供程序的文档中指定。
[out] ppCallResult
如果为 NULL,则不使用此参数。 如果指定 了 ppCallResult ,则必须在输入时将其设置为指向 NULL 。 如果 lFlags 参数包含 WBEM_FLAG_RETURN_IMMEDIATELY,此调用将立即返回 并WBEM_S_NO_ERROR。 ppCallResult 参数接收指向新的 IWbemCallResult 对象的指针,然后可以使用 GetCallStatus 方法轮询该对象以获取结果。
返回值
此方法返回指示方法调用状态的 HRESULT。 以下列表列出了 HRESULT 中包含的值。
如果失败,可以从 COM 函数 GetErrorInfo 获取任何可用信息。
如果网络问题导致你失去与 Windows 管理的远程连接,也可能会返回特定于 COM 的错误代码。
注解
调用 IWbemServices::D eleteInstance 方法以删除当前命名空间中的现有实例。 无法删除其他命名空间中的实例。 调用 DeleteInstance 以删除属于层次结构中某个类的实例时,Windows 管理会为层次结构中负责非抽象类的所有提供程序调用 DeleteInstanceAsync 方法。 也就是说,如果 strObjectPath 参数标识 ClassB 的实例,而 ClassB 派生自 ClassA(一个非抽象类),并且是 ClassC 和 ClassD(也是非抽象类)的父类,则调用所有四个类的提供程序。
Windows 管理使用修改为指向其类的对象路径调用每个提供程序。 例如,如果原始调用的 strObjectPath 设置为“ClassB.k=1”,则对 ClassA 的提供程序的调用会将 strObjectPath 设置为“ClassA.k=1”。
DeleteInstance 调用的成功仅取决于对最顶层非抽象类的提供程序的 DeleteInstanceAsync 调用是否成功。 非抽象类将抽象类作为其父类。 如果任一此类类的提供程序成功,则操作成功;如果所有此类都失败,则操作将失败。
例如,假设 ClassX 是以下层次结构的基类:
- ClassA 派生自 ClassX。
- ClassB 派生自 ClassA。
- ClassC 和 ClassD 派生自 ClassB。
如果 ClassX、ClassA 和 ClassB 都是抽象的,并且 DeleteInstance 中的 strObjectPath 参数再次指向 ClassB 的实例,则 ClassC 的提供程序或 ClassD 的提供程序必须成功。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista |
最低受支持的服务器 | Windows Server 2008 |
目标平台 | Windows |
标头 | wbemcli.h (包括 Wbemidl.h) |
Library | Wbemuuid.lib |
DLL | Fastprox.dll;Esscli.dll;FrameDyn.dll;FrameDynOS.dll;Ntevt.dll;Stdprov.dll;Viewprov.dll;Wbemcomn.dll;Wbemcore.dll;Wbemess.dll;Wbemsvc.dll;Wmipicmp.dll;Wmidcprv.dll;Wmipjobj.dll;Wmiprvsd.dll |