共用方式為


PutClassWmi 函式

建立新類別或更新現有類別。

注意

此 API 僅供內部使用。 不是要讓您在開發人員程式碼中使用。

語法

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

參數

pObject
[in] 有效類別定義的指標。 其必須使用所有必要屬性值來正確初始化。

lFlags
[in] 影響此函式行為的旗標組合。 下列值定義於 WbemCli.h 標頭檔中,或者,您可以將其定義為程式碼中的常數:

常數 描述
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 標頭檔中,或者,您可以將其定義為程式碼中的常數:

常數 描述
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 起可用

另請參閱