iWbemObjectSink::SetStatus 方法 (wbemcli.h)

IWbemObjectSink::SetStatus 方法是由來源呼叫,以指出通知序列的結尾,或將其他狀態代碼傳送至接收。 呼叫 SetStatus 之前,IWbemObjectSink::Indicate 方法可能或可能尚未呼叫。

一般而言,用戶端會實作 IWbemObjectSink 介面,並執行 IWbemServices 方法,以使用 IWbemObjectSink 介面傳回其結果。 在此作業期間,WMI 呼叫 會指出 所需次數,後面接著 SetStatus 的最終呼叫,在許多情況下, 即 Release

語法

HRESULT SetStatus(
  [in] long             lFlags,
  [in] HRESULT          hResult,
  [in] BSTR             strParam,
  [in] IWbemClassObject *pObjParam
);

參數

[in] lFlags

狀態資訊的位掩碼。 檢查 hResult 參數即可取得作業的狀態。

WBEM_STATUS_COMPLETE

作業已完成。

WBEM_STATUS_PROGRESS

作業仍在進行。

WBEM_STATUS_REQUIREMENTS

用於啟用篩選後。

[in] hResult

此參數設定為異步操作或通知的 HRESULT 。 如果發生錯誤,或異步呼叫上所做的進度量,這是錯誤碼。

[in] strParam

如果原始異步操作傳回字串,則會接收只讀 BSTR 的指標。 例如,使用 PutInstanceAsync 時, 會呼叫 SetStatus ,並將此參數設定為新建立實例的物件路徑。

[in] pObjParam

如果傳回複雜的錯誤或狀態物件,這會包含錯誤物件的指標。 如果 SetStatus 傳回之後需要物件,則呼叫的對象必須在指標上使用 AddRef 方法,才能傳回呼叫的物件。

傳回值

這個方法會傳回 HRESULT ,指出方法呼叫的狀態。 下列清單列出 HRESULT 中包含的值。

備註

實作事件訂閱接收 (IWbemObjectSinkIWbemEventSink) 時,請勿從接收物件的 SetStatus 方法內呼叫 WMI。 例如,從 SetStatus 實作內呼叫 IWbemServices::CancelAsyncCall 可能會干擾 WMI 狀態。 若要取消事件訂閱,請設定旗標,並從另一個線程或物件呼叫 IWbemServices::CancelAsyncCall 。 對於與事件接收無關的實作,例如物件、列舉和查詢擷取,您可以回呼 WMI。

接收實作應該會在 100 MSEC 內處理事件通知,因為傳遞事件通知的 WMI 線程無法在接收物件完成處理之前執行其他工作。 如果通知需要大量處理,接收可以使用內部佇列處理另一個線程來處理處理。 對於與事件接收無關的實作,例如物件、列舉和查詢擷取,您可以回呼 WMI。

若要透過用戶端的 SetStatus 實作接收中繼狀態更新,您必須在呼叫提供者/服務方法時指定 WBEM_FLAG_SENT_STATUS 。 您可以分別檢查 hResult 的 HIWORD 和 LOWORD 值來判斷確切的狀態。 LOWORD (hResult) 值包含到目前為止所做的進度量,而 HIWORD (hResult) 值包含總計。

如果您未在呼叫提供者或服務方法時指定 WBEM_FLAG_SEND_STATUS ,您保證會收到一個和一個 SetStatus 呼叫。

規格需求

需求
最低支援的用戶端 Windows Vista
最低支援的伺服器 Windows Server 2008
目標平台 Windows
標頭 wbemcli.h (包含 Wbemidl.h)
程式庫 Wbemuuid.lib
Dll Fastprox.dll

另請參閱

IWbemObjectSink

IWbemObjectSink::Indicate

IWbemObjectSinkEx

IWbemServices::ExecQueryAsync

WBEM_STATUS_TYPE