共用方式為


ExecNotificationQueryWmi 函式

執行查詢以接收事件。 呼叫會立即傳回,而呼叫端可以在到達事件時輪詢傳回的列舉值。 釋放傳回的列舉值會取消查詢。

注意

此 API 僅供內部使用。 不是要讓您在開發人員程式碼中使用。

語法

HRESULT ExecNotificationQueryWmi (
   [in] BSTR                    strQueryLanguage,
   [in] BSTR                    strQuery,
   [in] long                    lFlags,
   [in] IWbemContext*           pCtx,
   [out] IEnumWbemClassObject** ppEnum,
   [in] DWORD                   authLevel,
   [in] DWORD                   impLevel,
   [in] IWbemServices*          pCurrentNamespace,
   [in] BSTR                    strUser,
   [in] BSTR                    strPassword,
   [in] BSTR                    strAuthority
);

參數

strQueryLanguage
[in] 字串,具有 Windows 管理所支援的有效查詢語言。 它必須是「WQL」,這是 WMI 查詢語言的縮略字。

strQuery
[in] 查詢的文字。 這個參數不可以是 null

lFlags
[in] 影響此函式行為的以下兩個旗標組合。 下列值定義於 WbemCli.h 標頭檔中,或者,您可以將其定義為程式碼中的常數。

常數 描述
WBEM_FLAG_RETURN_IMMEDIATELY 0x10 旗標會造成半同步呼叫。 如果未設定此旗標,呼叫就會失敗。 這是因為會持續收到事件,這表示使用者必須輪詢傳回的列舉值。 封鎖此呼叫會無限期地讓該呼叫變得不可能。
WBEM_FLAG_FORWARD_ONLY 0x20 函式會傳回順向列舉值。 一般而言,順向列舉值的速度較快,且使用記憶體比傳統列舉值少,但不允許呼叫 Clone

pCtx
[in] 一般而言,此值為 null。 否則會是指向 IWbemCoNtext 執行個體的指標,可供所要求事件的提供者使用。

ppEnum
[out] 如果沒有發生錯誤,就會收到列舉值的指標,讓呼叫端能夠擷取查詢結果集中的實例。 如需詳細資訊,請參閱備註一節。

authLevel
[in] 授權等級。

impLevel
[in] 模擬等級。

pCurrentNamespace
[in] 代表目前命名空間的 IWbemServices 物件指標。

strUser
[in] 使用者名稱。 如需詳細資訊,請參閱 ConnectServerWmi 函式。

strPassword
[in] 密碼。 如需詳細資訊,請參閱 ConnectServerWmi 函式。

strAuthority
[in] 使用者的網域名稱。 如需詳細資訊,請參閱 ConnectServerWmi 函式。

傳回值

此函式傳回的下列值定義於 WbemCli.h 標頭檔中,或者,您可以將其定義為程式碼中的常數:

常數 描述
WBEM_E_ACCESS_DENIED 0x80041003 使用者沒有權限可檢視函式可傳回的一或多個類別。
WBEM_E_FAILED 0x80041001 發生未指定的錯誤。
WBEM_E_INVALID_PARAMETER 0x80041008 參數無效。
WBEM_E_INVALID_CLASS 0x80041010 查詢指定不存在的類別。
WBEMESS_E_REGISTRATION_TOO_PRECISE 0x80042002 要求傳遞事件的精確度太高。 必須指定較大的輪詢容錯。
WBEMESS_E_REGISTRATION_TOO_BROAD 0x80042001 查詢會要求比 Windows 管理所能提供的更多資訊。 當事件查詢導致要求輪詢命名空間中的所有物件時,就會傳回 HRESULT
WBEM_E_INVALID_QUERY 0x80041017 查詢發生語法錯誤。
WBEM_E_INVALID_QUERY_TYPE 0x80041018 所要求的查詢語言不支援。
WBEM_E_QUOTA_VIOLATION 0x8004106c 查詢太複雜。
WBEM_E_OUT_OF_MEMORY 0x80041006 可用的記憶體不足,無法完成作業。
WBEM_E_SHUTTING_DOWN 0x80041033 WMI 可能已停止並重新啟動。 再次呼叫 ConnectServerWmi
WBEM_E_TRANSPORT_FAILURE 0x80041015 目前處理序與 WMI 之間的遠端程序呼叫 (RPC) 連結失敗。
WBEM_E_UNPARSABLE_QUERY 0x80041058 查詢不法剖析。
WBEM_S_NO_ERROR 0 函式呼叫成功。

備註

此函式會包裝 IWbemServices::ExecNotificationQuery 方法的呼叫。

函式傳回之後,呼叫端會定期將傳回的 ppEnum 物件傳遞至 Next 函式,以查看是否有任何事件可用。

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

如果函式呼叫失敗,您可以藉由呼叫 GetErrorInfo 函式來取得其他錯誤資訊。

規格需求

平台:請參閱系統需求

標頭:WMINet_Utils.idl

.NET Framework版本:自 4.7.2 起可用

另請參閱