IWbemServices::ExecNotificationQuery 方法 (wbemcli.h)

IWbemServices::ExecNotificationQuery 方法會執行查詢來接收事件。 呼叫會立即傳回,而且用戶可以在抵達時輪詢傳回的事件列舉值。 釋放傳回的列舉值會取消查詢。

語法

HRESULT ExecNotificationQuery(
  [in]  const BSTR           strQueryLanguage,
  [in]  const BSTR           strQuery,
  [in]  long                 lFlags,
  [in]  IWbemContext         *pCtx,
  [out] IEnumWbemClassObject **ppEnum
);

參數

[in] strQueryLanguage

有效的 BSTR ,其中包含 Windows 管理所支援的其中一種查詢語言。 這不可以是 NULL。 目前僅支援 WMI 查詢語言 (WQL) 。

[in] strQuery

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

[in] lFlags

此參數必須同時設定為 WBEM_FLAG_RETURN_IMMEDIATELYWBEM_FLAG_FORWARD_ONLY ,否則呼叫會失敗。

WBEM_FLAG_FORWARD_ONLY

此旗標會導致傳回順向列舉值。 順向列舉值通常更快,而且使用記憶體比傳統列舉值少,但不允許呼叫 CloneReset

WBEM_FLAG_RETURN_IMMEDIATELY

用戶必須指定此旗標,否則呼叫會失敗。 這是因為會持續收到事件,這表示使用者必須輪詢傳回的列舉值。 無限期地封鎖此呼叫,同時等候可能的事件會封鎖線程無限期的時間。 如需詳細資訊,請參閱 呼叫方法

[in] pCtx

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

[out] ppEnum

如果沒有發生錯誤,此參數會接收列舉值,讓呼叫端擷取查詢結果集中的實例。 呼叫端會定期呼叫 IEnumWbemClassObject::Next 以查看是否有任何事件可用。 請注意,在此用法中, Reset 不會將列舉值移回事件順序的開頭;它沒有任何作用。 參數可以繼續接收事件,直到在傳回的列舉值上呼叫 Release 為止。

傳回值

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

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

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

備註

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::ExecNotificationQueryAsync

使用 WQL 進行查詢

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

擷取錯誤碼