描述
SWbemServicesEx对象的PutAsync方法将异步异步保存到命名空间。成功后,此方法将OnCompleted事件发送到指定为输入参数的SWbemSink对象。
该方法在异步模式下被调用。有关详细信息,请参阅调用方法.
PowerBASIC 语法
METHOD PutAsync ( _ BYVAL objWbemSink AS ISWbemSink, _ BYVAL objWbemObject AS ISWbemObjectEx, _ OPTIONAL BYVAL iFlags AS LONG, _ OPTIONAL BYVAL objWbemNamedValueSet AS IDispatch, _ OPTIONAL BYVAL objWbemAsyncContext AS IDispatch _ ) |
参数
objWbemSink
需要。异步接收对象的对象接收器。创建一个SWbemSink对象来接收对象。
objWbemObject
需要。要放在命名空间中的新对象。这可能是新创建的对象或修改对象。
iFlags
LONG.此参数确定调用是创建还是更新对象,以及该调用是否立即返回。此参数可以接受以下值。
值 |
含义 |
wbemChangeFlagUpdateCompatible 0 &H0 |
如果没有派生类,并且没有该类的实例,则允许更新类。它还允许在所有情况下更新仅对不重要的限定符(例如描述限定符))。这是此调用的默认行为,用于与以前版本的WMI兼容。如果类有实例,则更新失败。 |
wbemChangeFlagUpdateSafeMode 32 &H20 |
允许更新类,即使有子类,当更改不会导致与子类的任何冲突。将新属性添加到以前没有在任何子类中提到的基类时,可以使用此标志。如果类有实例,则更新失败。 |
wbemChangeFlagUpdateForceMode 64 &H40 |
当存在冲突的子类时,此标志强制更新类。例如,如果在子类中定义了类限定词,则此标志强制更新,并且基类尝试添加与现有类限定符冲突的相同限定符。在强制模式下,通过删除子类中的冲突限定符来解决此冲突。如果类有实例,则更新失败。
使用force模式来更新静态类会导致删除该类的所有实例。提供程序类上的强制更新不会删除该类的实例。 |
wbemChangeFlagCreateOrUpdate 0 &H0 |
导致类或实例被创建,如果它不存在,或覆盖,如果它已经存在。 |
wbemChangeFlagCreateOnly 2 &H2 |
仅用于创作。如果类或实例已经存在,则调用失败。 |
wbemChangeFlagUpdateOnly 1 &H1 |
使此呼叫仅执行更新。类或实例必须存在才能使呼叫成功。 |
wbemFlagReturnImmediately 16 &H10 |
使呼叫立即返回。 |
wbemFlagReturnWhenComplete 0 &H0 |
导致此呼叫阻止,直到操作完成。该标志在同步模式下调用该方法。 |
wbemFlagUseAmendedQualifiers 131072 &H20000 |
导致WMI编写类修改数据以及基类定义。有关详细信息,请参阅本地化WMI类信息. |
objWbemNamedvalueSet
通常,这是未定义的。否则,这是一个SWbemNamedValueSet对象,其元素表示服务请求的提供者可以使用的上下文信息。支持或要求此类信息的提供者必须记录识别的值名称,值的数据类型,允许的值和语义。
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 |
为不能为NULL的属性指定了NULL值。这种属性的示例是由键,索引或Not_Null限定符标记的属性。 |
wbemErrInvalidObject -2147217393 &H80041014 |
指定的对象无效。 |
wbemErrInvalidParameter -2147217400 &H80041008 |
指定了无效参数。 |
wbemErrNotFound -2147217406 &H80041002 |
指定了wbemChangeFlagUpdateOnly标志,但实例或类不存在。 |
wbemErrIncompleteClass -2147217376 &H80041020 |
类的必需属性尚未设置。 |
wbemErrOutOfMemory -2147217402 &H80041006 |
没有足够的内存来完成操作。 |
备注
此调用立即返回,结果和状态将通过传递到objWbemSink中指定的汇点的事件返回给调用者。要处理每个对象到达时,创建一个objWbemSink.OnObjectReady事件子例程。在所有对象到达之后完成的任何处理都在objWbemSinkOnCompleted事件的子程序中完成。
异步回调允许非验证用户向sink提供数据。这对您的脚本和应用程序造成安全隐患。要消除风险,请参阅设置异步调用的安全性.
要求
客户 |
需要Windows Vista或Windows XP。 |
服务器 |
需要Windows Server 2008或Windows Server 2003。 |
类型库 |
使用Wbemdisp.tlb。 |
头 |
Wbemdisp.inc。 |
DLL |
需要Wbemdisp.dll。 |