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中所指定接收的事件傳回給呼叫端。 若要在抵達時處理每個物件,請建立 objWbemSinkOnObjectReady 事件副程式。 所有物件抵達之後完成的任何處理都會在 objWbemSink的副程式中完成。OnCompleted 事件。

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

規格需求

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