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

PutClass Method

Previous pageReturn to chapter overviewNext page

描述

 

IWbemServices.PutClass方法创建一个新类或更新现有的类。必须使用pObjectbs参数指定的类正确初始化所有必需的属性值。

 

用户可能不会创建名称以下划线(_)开头或结尾的类。这是为系统类保留的。

 

C++ 语法

 

HRESULT PutClass(

[in]   IWbemClassObject *pObject,

[in]   LONG lFlags,

[in]   IWbemContext *pCtx,

[out]  IWbemCallResult **ppCallResult

);

 

PowerBASIC 语法

 

METHOD PutClass ( _

BYVAL pObject AS IWbemClassObject, _

BYVAL lFlags AS LONG, _

BYVAL pCtx AS IWbemContext, _

BYREF ppCallResult AS IWbemCallResult _

) AS LONG

 

参数

 

pObject

 

必须指向一个有效的类定义。引用计数不变。

 

lFlags

 

以下标志影响此方法的行为。

 

含义

WBEM_FLAG_USE_AMENDED_QUALIFIERS

如果设置此标志,则WMI不会存储具有修改的风味的任何限定符。如果未设置此标志,则假定此对象未本地化,并且所有限定符都与此实例一起存储。

WBEM_FLAG_CREATE_OR_UPDATE

该标志引起类不存在时被创建,如果已经存在则覆盖该类。

WBEM_FLAG_UPDATE_ONLY

此标志使此呼叫更新。该类必须存在才能使呼叫成功。

WBEM_FLAG_CREATE_ONLY

此标志仅用于创建。如果类已经存在,则调用失败。

WBEM_FLAG_RETURN_IMMEDIATELY

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

WBEM_FLAG_OWNER_UPDATE

调用PutClass时,提供者必须指定此标志,以指示此类已更改。

WBEM_FLAG_UPDATE_COMPATIBLE

如果没有派生类,并且没有该类的实例,则此标志允许更新类。它还允许在所有情况下进行更新,如果更改只是非重要限定符(例如描述限定词)。这是此调用的默认行为,用于与以前版本的Windows Management兼容。如果类具有重要限定符的实例或更改,则更新失败。

WBEM_FLAG_UPDATE_SAFE_MODE

只要更改不会导致与子类的任何冲突,即使有子类也允许更新类。这个标志可以允许的更新示例是向基类中添加一个新的属性,该类不是以前在任何子类中提到的。如果类有实例,则更新失败。

WBEM_FLAG_UPDATE_FORCE_MODE

当存在冲突的子类时,此标志强制更新类。如果在子类中定义了类限定符,则该标志将强制更新的示例,并且基类尝试添加与现有类定义相冲突的相同限定符。在强制模式下,通过删除子类中的冲突限定符可以解决此冲突。

 

pCtx

 

通常为NULL。否则,这是指向生成类实例的动态类提供者所需的IWbemContext对象的指针。必须在相关提供者的文档中指定上下文对象中的值。有关此参数的更多信息,请参阅拨打电话给WMI.

 

ppCallResult

 

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

 

返回值

 

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

 

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

 

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

 

注意如果在客户端或提供程序使用它们时更改类定义,将导致不可预测的行为。当没有客户端或提供者当前正在使用该类时,IWbemServices.PutClass方法只能用于创建或更新类。

 

退货代码

描述

WBEM_E_ACCESS_DENIED

当前用户不允许创建或修改类。

WBEM_E_FAILED

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

WBEM_E_INVALID_PARAMETER

指定了无效参数。

WBEM_E_INVALID_CLASS

指定的类无效。如果在pObjectbs参数中指定了实例对象,您将看到此错误。

WBEM_E_INVALID_OPERATION

指定的类名无效。

WBEM_E_CLASS_HAS_CHILDREN

试图进行一个使子类无效的更改。

WBEM_E_INCOMPLETE_CLASS

类的必需属性尚未设置。

WBEM_E_OUT_OF_MEMORY

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

WBEM_E_SHUTTING_DOWN

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

WBEM_E_TRANSPORT_FAILURE

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

WBEM_S_NO_ERROR

通话成功。

WBEM_E_ALREADY_EXISTS

指定了WBEM_FLAG_CREATE_ONLY标志,但该类已存在。

WBEM_E_NOT_FOUND

LFLAGS中指定了WBEM_FLAG_UPDATE_ONLY,没有找到该类。

 

要求

 

客户

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