IWbemServices::ExecNotificationQueryAsync 方法 (wbemcli.h)

IWbemServices::ExecNotificationQueryAsync方法會執行與IWbemServices::ExecNotificationQuery相同的工作,但事件會提供給指定的回應處理常式,直到呼叫 CancelAsyncCall以停止事件通知為止。

語法

HRESULT ExecNotificationQueryAsync(
  [in] const BSTR      strQueryLanguage,
  [in] const BSTR      strQuery,
  [in] long            lFlags,
  [in] IWbemContext    *pCtx,
  [in] IWbemObjectSink *pResponseHandler
);

參數

[in] strQueryLanguage

有效的 BSTR ,其中包含 Windows 管理所支援的其中一種查詢語言。 這必須是 「WQL」。

[in] strQuery

包含事件相關查詢文字的有效 BSTR 。 這不可以是 Null。 如需建置 WMI 查詢字串的詳細資訊,請參閱 使用 WQL 查詢和 WQL 參考。

[in] lFlags

此參數可以是下列值。

WBEM_FLAG_SEND_STATUS

此旗標會向 Windows 管理註冊要求,以透過用戶端實作 IWbemObjectSink::SetStatus接收中繼狀態報表。 提供者實作必須支援此旗標的中繼狀態報表,才能變更行為。

[in] pCtx

通常 為 Null。 否則,這是 IWbemCoNtext 物件的指標,可由傳回要求事件的提供者使用。 內容物件中的值必須在有問題的提供者檔中指定。 如需此參數的詳細資訊,請參閱 呼叫 WMI

[in] pResponseHandler

呼叫端 IWbemObjectSink實作的指標。 此處理程式會在查詢結果集中接收物件,因為它們可供使用。 若要停止接收事件,呼叫端必須使用pResponseHandler的相同指標值呼叫IWbemServices::CancelAsyncCall。 當事件可供使用時,會呼叫提供的 IWbemObjectSink::Indicate 實作來傳遞事件物件。 IWbemObjectSink::SetStatus方法不會隨時呼叫,因為沒有最終或終止的條件。 呼叫會無限期執行,直到取消為止。 如果傳回任何錯誤碼,則不會使用提供的 IWbemObjectSink 指標。 如果 傳回WBEM_S_NO_ERROR ,則會呼叫使用者的 IWbemObjectSink 實作來指出作業的結果。 如果WBEM_S_NO_ERROR傳回Windows 管理只會在指標上呼叫AddRef。 如果錯誤碼傳回,則參考計數與專案相同。 如需此參數的詳細說明,請參閱 呼叫方法

傳回值

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

失敗時,您可以從 COM 函式 GetErrorInfo取得任何可用資訊。

其他錯誤碼會傳回 pResponseHandler 參數所指定的物件接收。

如果網路問題造成您失去與 Windows 管理的遠端連線,也可以傳回 COM 特定的錯誤碼。

備註

系統會呼叫 IWbemObjectSink::SetStatus 方法,以指出結果集的結尾。 它也可能呼叫,而不需對 IWbemObjectSink::指出 發生錯誤狀況。

由於回呼可能不會與用戶端所需的相同驗證層級傳回,因此建議您使用半非同步而非非同步通訊。 如果您需要非同步通訊,請參閱 呼叫 方法

如需以半非同步方式使用方法的詳細資訊,請參閱 IWbemServices::ExecNotificationQuery呼叫方法

WQL 查詢中可以使用 的 ANDOR 關鍵字數目有一些限制。 複雜查詢中使用的大量 WQL 關鍵字可能會導致 WMI 將 WBEM_E_QUOTA_VIOLATION 錯誤碼傳回為 HRESULT 值。 WQL 關鍵字的限制取決於查詢的複雜程度。

規格需求

   
最低支援的用戶端 Windows Vista
最低支援的伺服器 Windows Server 2008
目標平台 Windows
標頭 wbemcli.h (包含 Wbemidl.h)
程式庫 Wbemuuid.lib
Dll Fastprox.dll;Esscli.dll;FrameDyn.dll;FrameDynOS.dll;Ntevt.dll;Stdprov.dll;Viewprov.dll;Wbemcomn.dll;Wbemcore.dll;Wbemess.dll;Wbemsvc.dll;Wmipicmp.dll;Wmidcprv.dll;Wmipjobj.dll;Wmiprvsd.dll

另請參閱

呼叫方法

IWbemServices

IWbemServices::ExecQuery

接收事件通知

在應用程式的持續時間內接收事件