IWbemObjectSink::Indicate 方法 (wbemcli.h)

Indicate方法是由來源呼叫以提供通知。 一般而言,WMI 會在用戶端執行 IWbemServices的其中一個非同步方法之後,呼叫此介面的用戶端實作。 在其他情況下,不同類型的提供者會呼叫 WMI 匯出的實作來傳遞事件。 因此,在某些情況下,用戶端程式代碼可能必須實作此介面,並在其他情況下使用不同的元件的實作。

將此介面和方法與 IWbemServices 介面的非同步方法搭配使用。

用戶端和提供者必須實作這個介面,才能接收通知,或執行 IWbemServices的非同步方法。 如需詳細資訊,請參閱 呼叫方法

語法

HRESULT Indicate(
  [in] long             lObjectCount,
  [in] IWbemClassObject **apObjArray
);

參數

[in] lObjectCount

下列指標陣列中的物件數目。

[in] apObjArray

IWbemClassObject介面的指標陣列。 陣列記憶體本身是唯讀的,而且是由 方法的呼叫端所擁有。 因為這是 in 參數,所以實作可以選擇在陣列中的任何物件指標上呼叫 IWbemClassObject::AddRef ,並在傳回之前先保留它,以根據 COM 規則傳回方法之後使用物件。 如果物件只用于 Indicate 呼叫的持續時間,則您不需要在每個物件指標上呼叫 AddRef

傳回值

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

備註

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

接收實作應該在 100 MSEC 內處理事件通知,因為傳遞事件通知的 WMI 執行緒無法在接收物件完成處理之前執行其他工作。 如果通知需要大量處理,接收可以使用內部佇列處理另一個執行緒來處理處理。

當事件提供者呼叫 Indicate 來提供事件時,呼叫可能會因為 WBEM_E_SERVER_TOO_BUSY而失敗。 提供者可以藉由重新引發事件來選擇回應此訊息。

注意 由於對接收的回呼可能不會在用戶端所需的相同驗證層級傳回,因此建議您使用半同步而非非同步通訊。 如需詳細資訊,請參閱 呼叫方法
 

規格需求

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

另請參閱

IWbemObjectSink

IWbemObjectSink::SetStatus

IWbemObjectSinkEx

IWbemServices::ExecQueryAsync