PutClassWmi 函数

创建新类或更新现有类。

注意

此 API 仅供内部使用。 不应从开发人员代码中使用。

语法

HRESULT PutClassWmi (
   [in] IWbemClassObject*    pObject,
   [in] long                 lFlags,
   [in] IWbemContext*        pCtx,
   [out] IWbemCallResult**   ppCallResult
);

参数

pObject
[in] 指向有效类定义的指针。 必须使用所有必需的属性值正确地对它进行初始化。

lFlags
[in] 影响此函数的行为的标志组合。 以下值是在 WbemCli.h 头文件中定义,也可以将它们定义为代码中的常数:

常数 Value 说明
WBEM_FLAG_USE_AMENDED_QUALIFIERS 0x20000 如果设置,WMI 不会存储任何带有修改后特色信息的限定符。
如果未设置,则假定此对象未本地化,并且所有限定符都与此实例一起存储。
WBEM_FLAG_CREATE_OR_UPDATE 0 创建类(如果该类不存在)或覆盖它(如果它已存在)。
WBEM_FLAG_UPDATE_ONLY 1 更新类。 类必须存在,这样调用才能成功。
WBEM_FLAG_CREATE_ONLY 2 创建类。 如果类已存在,则调用失败。
WBEM_FLAG_RETURN_IMMEDIATELY 0x10 此标志会导致半同步调用。
WBEM_FLAG_OWNER_UPDATE 0x10000 推送提供程序在调用 PutClassWmi 时必须指定此标志来指示此类已更改。
WBEM_FLAG_UPDATE_COMPATIBLE 0 如果没有派生类并且没有该类的实例,则允许更新类。 如果更改仅限于不重要的限定符(例如描述限定符),则它还允许在所有情况下进行更新。 如果类有实例或对重要的限定符进行了更改,则更新会失败。
WBEM_FLAG_UPDATE_SAFE_MODE 0x20 允许更新类,即使存在子类也是如此,只要更改不会导致与子类发生冲突即可。 例如,此标志允许将新的属性添加到基类中,此基类先前未在任何子类中提及。 如果类有实例,则更新会失败。
WBEM_FLAG_UPDATE_FORCE_MODE 0x40 存在冲突的子类时强制更新类。 例如,如果类限定符是在子类中定义的并且基类尝试添加与现有限定符冲突的同一个限定符,则此标志会强制进行更新。 在强制模式下,冲突是通过删除子类中冲突的限定符来解决的。

pCtx
[in] 通常,此值为 null。 否则,它是一个指向 IWbemContext 实例的指针,提供请求的类的提供程序可使用该实例。

ppCallResult
[out] 如果为 null,则不使用此参数。 如果 lFlags 包含 WBEM_FLAG_RETURN_IMMEDIATELY,函数会立即返回并出现 WBEM_S_NO_ERRORppCallResult 参数接收指向新的 IWbemCallResult 对象的指针。

返回值

此函数返回的以下值是在 WbemCli.h 头文件中定义的,你也可以在代码中将这些值定义为常数:

常数 Value 说明
WBEM_E_ACCESS_DENIED 0x80041003 用户无权创建或修改类。
WBEM_E_FAILED 0x80041001 发生了未知错误。
WBEM_E_INVALID_CLASS 0x80041010 所指定的类无效。 通常,这指示 pObject 指定实例对象。
WBEM_E_INVALID_PARAMETER 0x80041008 参数无效。
WBEM_E_INVALID OPERATION 0x80041016 指定的类名无效。
WBEM_E_CLASS_HAS_CHILDREN 0x80041025 已尝试进行使子类无效的更改。
WBEM_E_ALREADY_EXISTS 0x80041019 已指定 WBEM_FLAG_CREATE_ONLY 标志,但该类已存在。
WBEM_E_NOT_FOUND 0x80041002 已在 lFlags 中指定了 WBEM_FLAG_UPDATE_ONLY,并且找不到该类。
WBEM_E_INCOMPLETE_CLASS 0x80041020 尚未完全设置类的必需属性。
WBEM_E_OUT_OF_MEMORY 0x80041006 没有足够的可用内存来完成该操作。
WBEM_E_SHUTTING_DOWN 0x80041033 WMI 可能已停止并重启。 再次调用 ConnectServerWmi
WBEM_E_TRANSPORT_FAILURE 0x80041015 当前进程和 WMI 之间的远程过程调用 (RPC) 链接已失败。
WBEM_S_NO_ERROR 0 函数调用成功。

注解

此函数包装对 IWbemServices::PutClass 方法的调用。

用户不能创建名称以下划线字符开头或结尾的类。

如果该函数调用失败,你可以通过调用 GetErrorInfo 函数获取额外的错误信息。

要求

平台:请参阅系统要求

标头:WMINet_Utils.idl

.NET Framework 版本:自 4.7.2 起可用

另请参阅