勇芳软件工作室.汉化:  Windows Management Instrumentation > COM API for WMI > Interfaces > IWbemServices >

DeleteInstance Method

Previous pageReturn to chapter overviewNext page

描述

 

IWbemServices.DeleteInstance方法删除当前命名空间中现有类的实例。

 

C++ 语法

 

HRESULT DeleteInstance(

[in]   const BSTR strObjectPath,

[in]   LONG lFlags,

[in]   IWbemContext *pCtx,

[out]  IWbemCallResult **ppCallResult

);

 

PowerBASIC 语法

 

METHOD DeleteInstance ( _

BYVAL strObjectPath AS DWORD, _

BYVAL lFlags AS LONG, _

BYVAL pCtx AS IWbemContext, _

BYREF ppCallResult AS IWbemCallResult _

) AS LONG

 

参数

 

strObjectPath

 

有效BSTR包含要删除的实例的对象路径。

 

lFlags

 

以下值之一是有效的。

 

含义

WBEM_FLAG_RETURN_IMMEDIATELY

这个标志使它成为一个半异步调用。

 

pCtx

 

通常为NULL。否则,这是指向正在删除实例的提供者可能使用的IWbemContext对象的指针。必须在相关提供者的文档中指定上下文对象中的值。

 

ppCallResult

 

如果为NULL,则不使用此参数。如果指定ppCallResult,则必须将其设置为指定为NULL。如果lFlags参数包含WBEM_FLAG_RETURN_IMMEDIATELY,此调用将立即返回WBEM_S_NO_ERROR。ppCallResult参数接收一个指向新的IWbemCallResult对象的指针,然后可以使用GetCallStatus方法轮询获取结果。

 

返回值

 

此方法返回一个HRESULT,表示方法调用的状态。下表列出了HRESULT中包含的值。

 

失败时,您可以从COM函数GetErrorInfo获取任何可用的信息。

 

如果网络问题导致您失去与Windows Management的远程连接,也可能会返回COM特定的错误代码。

 

退货代码

描述

WBEM_E_ACCESS_DENIED

当前上下文没有足够的删除对象的权限。

WBEM_E_FAILED

这表示其他未指定的错误。

WBEM_E_INVALID_CLASS

指定的类不存在。

WBEM_E_INVALID_PARAMETER

其中一个参数无效,就像尝试删除类对象一样。

WBEM_E_NOT_FOUND

对象不存在。

WBEM_E_OUT_OF_MEMORY

没有足够的内存来完成操作。

WBEM_E_SHUTTING_DOWN

Windows管理服务可能已停止并重新启动。需要新的电话ConnectServer.

WBEM_E_TRANSPORT_FAILURE

这表示当前进程和Windows Management之间的远程过程调用(RPC)链接失败。

WBEM_E_INVALID_OBJECT_PATH

如果指定的对象路径无效或是类对象路径。

WBEM_E_INVALID_OPERATION

如果指定的实例不能被删除。

WBEM_S_NO_ERROR

通话成功。

 

备注

 

调用IWbemServices.DeleteInstance方法来删除当前命名空间中的现有实例。其他命名空间中的实例无法删除。调用DeleteInstance以删除属于层次结构中的类的实例时,Windows Management将为层次结构中负责非抽象类的所有提供者调用DeleteInstanceAsync方法。也就是说,如果strObjectPath参数标识ClassB的一个实例,ClassB派生自ClassA,非抽象类,并且是ClassC和ClassD的父类,也是非抽象类,则调用所有四个类的提供程序。

 

Windows Management将调用每个提供程序,并将对象路径修改为指向其类。例如,如果原始调用的strObjectPath设置为“ClassB.k = 1”,则对ClassA提供程序的调用将将strObjectPath设置为“ClassA.k = 1”。

 

DeleteInstance呼叫的成功仅取决于对最高非抽象类的提供者的DeleteInstanceAsync调用的成功。非抽象类有一个抽象类作为其父类。如果任何一个类的提供者成功,则操作成功;如果所有这些类都失败,则操作失败。

 

例如,假设ClassX是以下层次结构的基类:

 

1.ClassA来自ClassX。
2.ClassB来自ClassA。
3.ClassC和ClassD派生自ClassB。

 

如果ClassX是层次结构中唯一的抽象类,并且DeleteInstance中的strObjectPath参数指向ClassB的实例,则只有ClassA的提供者需要在其DeleteInstanceAsync调用中成功。

 

如果ClassX,ClassA和ClassB都是抽象的,并且DeleteInstance中的strObjectPath参数再次指向ClassB的实例,则ClassC的提供者或ClassD的提供者必须成功。

 

要求

 

客户

需要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。