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 查詢中可以使用 的 AND 和 OR 關鍵字數目有一些限制。 複雜查詢中使用的大量 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 |