勇芳软件工作室.汉化:  Windows Management Instrumentation > Scripting API for WMI > Scripting API Objects > SWbemObject >

PutAsync_ Method

Previous pageReturn to chapter overviewNext page

描述

 

SWbemObjectPutAsync_方法异步地将实例或类对象创建或更新到Windows Management Instrumentation(WMI)。您可以在SWbemObject中修改任何属性或方法后使用此方法,并将更改写入WMI。

 

PowerBASIC 语法

 

METHOD PutAsync_ ( _

BYVAL objWbemSink AS IDispatch, _

OPTIONAL BYVAL iFlags LONG, _

OPTIONAL BYVAL objWbemNamedValueSet AS IDispatch, _

OPTIONAL BYVAL objWbemAsyncContext AS IDispatch _

)

 

参数

 

objWbemSink

 

需要。异步接收put操作的结果的对象接收器。

 

iFlags

 

确定调用是创建还是更新类或实例,并且调用是否立即返回。此参数可以接受以下值。

 

含义

wbemChangeFlagUpdateCompatible

0

&H0

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

wbemChangeFlagUpdateSafeMode

32

&H20

允许更新类,即使有子类,如果更改不会导致与子类的任何冲突。将新属性添加到以前没有在任何子类中提到的基类时,可以使用此标志。如果类具有更新失败的实例。如果类具有更新失败的实例。

WbemChangeFlagUpdateForceMode

64

&H40

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

 

使用强制模式更新静态类会导致删除该类的所有实例。提供程序类上的强制更新不会删除该类的实例。

wbemChangeFlagCreateOrUpdate

0

&H0

导致类或实例被创建,如果它不存在或覆盖,如果它已经存在。

wbemChangeFlagCreateOnly

2

&H2

仅用于创作。如果类或实例已经存在,则调用失败。

wbemChangeFlagUpdateOnly

1

&H1

导致此呼叫更新。类或实例必须存在才能使呼叫成功。

wbemFlagReturnImmediately

16

&H10

使呼叫立即返回。

wbemFlagReturnWhenComplete

0

&H0

导致此调用阻止,直到查询完成。

wbemFlagSendStatus

128

&H80

导致异步调用将状态更新发送到对象接收器的SWbemSink.OnProgress事件处理程序。

wbemFlagDontSendStatus

0

&H0

防止异步调用向对象接收器的OnProgress事件处理程序发送状态更新。

wbemFlagUseAmendedQualifiers

131072

&H20000

导致WMI编写类修改数据以及基类定义。有关修订限定词的更多信息,请参阅本地化WMI类信息.

 

objwbemNamedValueSet

 

通常,这是未定义的。否则,这是一个SWbemObjectPath对象,其元素表示正在为请求提供服务的提供者可以使用的上下文信息。支持或要求此类信息的提供者必须记录识别的值名称,值的数据类型,允许的值和语义。

 

objWbemAsyncContext

 

这是一个SWbemNamedValueSet对象,返回到对象接收器以识别原始异步调用的源。如果使用相同的对象接收器进行多个异步调用,请使用此参数。要使用此参数,请创建一个SWbemNamedValueSet对象,并使用SWbemNamedValueSet.Add方法添加一个标识您正在进行的异步调用的值。该SWbemNamedValueSet对象返回到对象接收器,可以使用SWbemNamedValueSet.Item方法提取调用的源。有关详细信息,请参阅调用方法.

 

返回值

 

此方法没有返回值。如果调用成功,则提供的对象宿的OnObjectPut事件将接收一个SWbemObjectPath对象,其中包含成功提交给WMI的实例或类的对象路径。

 

OBJRESULT

 

错误(名称/十进制/十六进制)

含义

wbemErrAccessDenied

-2147217405

&H80041003

当前用户没有权限查看指定类的实例。

wbemErrAlreadyExists

-2147217383

&H80041019

指定了wbemChangeFlagCreateOnly标志,但实例已存在。

wbemErrFailed

-2147217407

&H80041001

未指定错误

wbemErrIllegalNull

-2147217368

&H8004100A

没有的属性指定了值没有.这种属性的示例是由索引Not_Null限定词标记的属性。

wbemErrInvalidObject

-2147217393

&H80041014

指定的实例无效。

wbemErrInvalidParameter

-2147217400

&H80041008

指定了无效参数。

wbemErrNotFound

-2147217406

&H80041002

指定了wbemChangeFlagUpdateOnly标志,但实例或类不存在。

wbemErrIncompleteClass

-2147217376

&H80041020

类的必需属性尚未设置。

wbemErrOutOfMemory

-2147217402

&H80041006

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

 

备注

 

此调用立即返回,并且put操作的结果通过发送到objWbemSink中指定的汇点的回调函数返回给调用者。实现objWbemSink.OnObjectPut方法来获取写入WMI存储库的实例或类的对象路径。有关sink方法的更多信息,请参阅调用方法.

 

异步回调允许非验证用户向sink提供数据。这对您的脚本和应用程序造成安全隐患。为了消除风险,请使用半异步或同步通信。有关详细信息,请参阅调用方法.

 

要求

 

客户

需要Windows Vista,Windows XP,Windows 2000 Professional,Windows NT Workstation 4.0 SP4及更高版本,Windows Me,Windows 98或Windows 95 OSR2及更高版本。

服务器

需要Windows Server 2008,Windows Server 2003,Windows 2000 Server或Windows NT Server 4.0 SP4及更高版本。

类型库

使用Wbemdisp.tlb。

Wbemdisp.inc。

DLL

需要Wbemdisp.dll。