SWbemServicesEx.Put 方法

SWbemServicesEx 对象的 Put 方法将对象保存到绑定到对象的命名空间,并返回一个 SWbemObjectPath 对象,该对象包含写入数据的对象的路径。

此方法在半同步模式下调用。 有关详细信息,请参阅调用方法

有关此语法的说明,请参阅脚本 API 的文档约定

语法

objObjectPath = .Put( _
  ByVal objWbemObject, _
  [ ByVal iFlags ], _
  [ ByVal objWbemNamedValueSet ] _
)

parameters

objWbemObject

必需。 要放入命名空间的新对象。 这可以是新创建的对象或已修改的对象。

iFlags [optional]

此参数决定了调用是创建对象还是更新对象,以及调用是否立即返回。 此参数可以接受以下值。

wbemChangeFlagUpdateCompatible (0 (0x0))

如果没有派生类,并且没有类的实例,则允许更新该类。 如果更改仅限于不重要的限定符(例如 Description 限定符),该参数还允许在所有情况下进行更新。 这是此调用的默认行为,用于与早期版本的 WMI 兼容。 如果类有实例,则更新会失败。

wbemChangeFlagUpdateSafeMode (32 (0x20))

更改不会导致与子类发生冲突,则允许更新类,即使存在子类也是如此。 向之前未在任何子类中提到的基类添加新属性时,可使用此标志。 如果类有实例,则更新会失败。

wbemChangeFlagUpdateForceMode (64 (0x40))

当存在冲突的子类时,此标志强制更新类。 例如,如果类限定符是在子类中定义的,并且基类尝试添加与现有限定符冲突的同一个限定符,则此标志会强制进行更新。 在强制模式下,通过删除子类中存在冲突的限定符来解决此冲突。 如果类有实例,则更新会失败。

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

wbemChangeFlagCreateOrUpdate (0 (0x0))

如果类或实例不存在,会导致创建类或实例;如果已存在,则将其覆盖。

wbemChangeFlagCreateOnly (2 (0x2))

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

wbemChangeFlagUpdateOnly (1 (0x1))

导致此调用仅执行更新。 类或实例必须存在,这样调用才能成功。

wbemFlagReturnImmediately (16 (0x10))

使调用立即返回。

wbemFlagReturnWhenComplete (0 (0x0))

使此调用被阻止,直到操作完成。 此标志在同步模式下调用方法。

wbemFlagUseAmendedQualifiers (131072 (0x20000))

使 WMI 写入类修订数据和基类定义。 有关详细信息,请参阅本地化 WMI 类信息

objWbemNamedValueSet [optional]

通常,此参数未定义。 否则,该参数是一个 SWbemNamedValueSet 对象,其元素表示可供处理请求的提供程序使用的上下文信息。 支持或需要此类信息的提供程序必须记录已识别的值名称、值数据类型、允许的值和语义。

返回值

如果调用成功,会返回一个 SWbemObjectPath 对象。 此对象包含已成功提交到 WMI 的实例或类的对象路径。

错误代码

Put 方法完成后,Err 对象可能包含以下列表中的错误代码之一。

wbemErrAccessDenied - 2147749891 (0x80041003)

当前用户没有操作权限。

wbemErrAlreadyExists - 2147749913 (0x80041019)

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

wbemErrFailed - 2147749889 (0x80041001)

错误。

wbemErrIllegalNull - 2147749898 (0x8004100A)

为不能为 NULL 的属性指定了 NULL 值。 用 Key、Indexed 或 Not_Null 限定符标记的属性就是这类属性的一个示例。

wbemErrInvalidObject - 2147749908 (0x80041014)

指定的对象 ID 无效。

wbemErrInvalidParameter - 2147749896 (0x80041008)

指定的参数无效。

wbemErrNotFound - 2147749890 (0x80041002)

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

wbemErrIncompleteClass - 2147749920 (0x80041020)

尚未完全设置类的必需属性。

wbemErrOutOfMemory - 2147749894 (0x80041006)

内存不足,无法完成此操作。

要求

要求
最低受支持的客户端
Windows Vista
最低受支持的服务器
Windows Server 2008
标头
Wbemdisp.h
类型库
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_ISWbemServicesEx
IID
IID_ISWbemServicesEx