SWbemServicesEx.PutAsync 方法

SWbemServicesEx物件的PutAsync方法會將物件以非同步方式儲存至命名空間。 成功時,這個方法會將 OnCompleted 事件傳送至指定為輸入參數的 SWbemSink 物件。

這個方法會在非同步模式中呼叫。 如需詳細資訊,請參閱 呼叫方法。

如需此語法的說明,請參閱 腳本 API 的檔慣例。

語法

SWbemServicesEx.PutAsync( _
  ByVal objWbemSink, _
  ByVal ojbWbemObject, _
  [ ByVal iFlags ], _
  [ ByVal objWbemNamedValueSet ], _
  [ ByVal objWbemAsyncContext ] _
)

參數

objWbemSink

必要。 以非同步方式接收物件的物件接收。 建立 SWbemSink 物件以接收物件。

ojbWbemObject

必要。 要放入命名空間中的新物件。 這可能是新建立的物件或修改的物件。

iFlags [選擇性]

這個參數會決定呼叫是否會建立或更新物件,以及呼叫是否立即傳回。 此參數可以接受下列值。

wbemChangeFlagUpdateCompatible (0 (0x0) )

當沒有任何衍生類別和類別的實例時,允許更新類別。 它也允許在所有情況下的更新,例如,變更只變更為不重要的限定詞,例如 描述 限定詞。 這是此呼叫的預設行為,並用於與舊版 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 [選擇性]

一般而言,這是未定義的。 否則,這是 SWbemNamedValueSet 物件,其元素代表服務要求的提供者可以使用的內容資訊。 支援或需要這類資訊的提供者必須記載已辨識的值名稱、值的資料類型、允許的值和語意。

objWbemAsyncCoNtext [選擇性]

SWbemNamedValueSet物件,會返回物件接收,以識別原始非同步呼叫的來源。 使用此參數,使用相同的物件接收進行多個非同步呼叫。 若要使用此參數,請建立 SWbemNamedValueSet 物件,並使用 SWbemNamedValueSet.Add 方法來新增值,以識別您進行的非同步呼叫。 這個 SWbemNamedValueSet 物件會傳回至物件接收,而且可以使用 SWbemNamedValueSet.Item 方法擷取呼叫的來源。 如需詳細資訊,請參閱 呼叫方法。

傳回值

這個方法不會傳回值。 如果呼叫成功,提供之物件接收的 OnObjectPut 事件會收到 SWbemObjectPath 物件,其中包含成功認可至 WMI 的實例或類別物件路徑。

錯誤碼

完成 PutAsync方法之後,Err物件可能會包含下列清單中的其中一個錯誤碼。

wbemErrAccessDenied - 2147749891 (0x80041003)

目前使用者沒有更新指定類別實例的許可權。

wbemErrAlreadyExists - 2147749913 (0x80041019)

已指定 wbemChangeFlagCreateOnly 旗標,但實例已經存在。

wbemErrFailed - 2147749889 (0x80041001)

未指定的錯誤。

wbemErrIllegalNull - 2147749898 (0x8004100A)

為不可為 Null 的屬性指定 Null 值。 這類屬性的範例是 索引鍵、 索引或 Not_Null 限定詞所標記的屬性。

wbemErrInvalidObject - 2147749908 (0x80041014)

所指定的執行個體無效。

wbemErrInvalidParameter - 2147749896 (0x80041008)

指定的參數無效。

wbemErrNotFound - 2147749890 (0x80041002)

已指定 wbemChangeFlagUpdateOnly 旗標,但實例或類別不存在。

wbemErrIncompleteClass - 2147749920 (0x80041020)

尚未設定類別的必要屬性。

wbemErrOutOfMemory - 2147749894 (0x80041006)

記憶體不足,無法完成作業。

備註

此呼叫會立即傳回,而結果和狀態會透過傳遞至 objWbemSink中所指定接收的事件傳回給呼叫端。 若要在抵達時處理每個物件,請建立 objWbemSink。OnObjectReady 事件副程式。 所有物件抵達之後完成的任何處理都會在 objWbemSink的副程式中完成。OnCompleted 事件。

非同步回呼可讓未驗證的使用者將資料提供給接收。 這對您的腳本和應用程式造成安全性風險。 若要消除風險,請參閱 在非同步呼叫上設定安全性。

規格需求

需求 值
最低支援的用戶端
Windows Vista
最低支援的伺服器
Windows Server 2008
標頭
Wbemdisp.h
類型程式庫
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_ISWbemServicesEx
IID
IID_ISWbemServicesEx