SWbemServices.ExecQueryAsync 方法
SWbemServices物件的ExecQueryAsync方法會執行查詢來擷取物件。 此方法的呼叫會立即傳回,而結果和狀態會透過傳遞至 objWbemSink中所指定的接收事件傳回給呼叫端。 若要處理每個傳回的物件,請建立 objWbemSink。OnObjectReady 事件副程式。
方法會在非同步模式中呼叫。 如需詳細資訊,請參閱 呼叫方法。
如需此語法的說明,請參閱 腳本 API 的檔慣例。
語法
objWbemObjectSet = .ExecQueryAsync( _
[ ByVal objWbemSink ], _
ByVal strQuery, _
[ ByVal strQueryLanguage ], _
[ ByVal iFlags ], _
[ ByVal objwbemNamedValueSet ], _
[ ByVal objWbemAsyncContext ] _
)
參數
-
objWbemSink [選擇性]
-
以非同步方式執行查詢的物件接收。 建立 SWbemSink 物件以接收物件。
-
strQuery
-
必要。 包含查詢文字的字串。 此參數不可為空白。 如需建置 WMI 查詢字串的詳細資訊,請參閱 使用 WQL 查詢和 WQL 參考。
-
strQueryLanguage [選擇性]
-
包含要使用的查詢語言的字串。 如果指定,此值必須是 「WQL」。
-
iFlags [選擇性]
-
決定查詢行為的整數。 此參數可以接受下列值。
-
wbemFlagSendStatus (128 (0x80) )
-
導致非同步呼叫將狀態更新傳送至物件接收的 OnProgress 事件處理常式。
-
wbemFlagDontSendStatus (0 (0x0) )
-
防止非同步呼叫將狀態更新傳送至物件接收的 OnProgress 事件處理常式。
-
wbemQueryFlagPrototype (2 (0x2) )
-
用於原型。 它會停止查詢發生,而是傳回看起來像一般結果物件的 物件。
-
wbemFlagUseAmendedQualifiers (131072 (0x20000) )
-
導致 WMI 使用基類定義傳回類別增修條款資料。 如需詳細資訊,請參閱 當地語系化 WMI 類別資訊。
objwbemNamedValueSet [選擇性]
一般而言,這是未定義的。 否則,這是 SWbemNamedValueSet 物件,其元素代表服務要求的提供者可以使用的內容資訊。 支援或需要內容資訊的提供者必須記載已辨識的值名稱、值的資料類型、允許的值和語意。
objWbemAsyncCoNtext [選擇性]
SWbemNamedValueSet物件,會傳回物件接收,以識別原始非同步呼叫的來源。 使用此參數來使用相同的物件接收進行多個非同步呼叫。 若要使用此參數,請建立 SWbemNamedValueSet 物件,並使用 SWbemNamedValueSet.Add 方法來新增值,以識別您進行的非同步呼叫。 這個 SWbemNamedValueSet 物件會傳回至物件接收,而且可以使用 SWbemNamedValueSet.Item 方法擷取呼叫的來源。 如需詳細資訊,請參閱 呼叫方法。
傳回值
這個方法沒有傳回值。 如果成功,接收會收到每個實例的 OnObjectReady 事件。 在最後一個實例之後,物件接收會收到 OnCompleted 事件。
錯誤碼
完成 ExecQueryAsync方法之後,Err物件可以包含下列清單中的其中一個錯誤碼。
-
wbemErrAccessDenied - 2147749891 (0x80041003)
-
目前使用者沒有檢視結果集的許可權。
-
wbemErrFailed - 2147749889 (0x80041001)
-
未指定的錯誤。
-
wbemErrInvalidParameter - 2147749896 (0x80041008)
-
指定了不正確參數。
-
wbemErrInvalidQuery - 2147749911 (0x80041017)
-
查詢語法無效。
-
wbemErrInvalidQueryType - 2147749912 (0x80041018)
-
不支援要求的查詢語言。
-
wbemErrOutOfMemory - 2147749894 (0x80041006)
-
記憶體不足,無法完成作業。
備註
此呼叫會立即傳回。 要求的物件和狀態會透過傳遞至 objWbemSink中指定的接收回呼傳回給呼叫端。 若要在傳回時處理每個物件,請建立 objWbemSink。OnObjectReady 事件副程式。 傳回所有物件之後,請在 objWbemSink的實作中執行最終處理。OnCompleted 事件。
非同步回呼可讓未驗證的使用者將資料提供給接收。 這對您的腳本和應用程式造成安全性風險。 若要消除風險,請參閱 在非同步呼叫上設定安全性
當沒有物件符合查詢中的準則時, ExecQueryAsync 方法會傳回空的結果集。 這個方法會傳回索引 鍵 屬性,不論 Key 屬性是否在 strQuery 參數中要求。
WQL 查詢中可以使用 的 AND 和 OR 關鍵字數目有一些限制。 複雜查詢中使用的大量 WQL 關鍵字可能會導致 WMI 將WBEM_E_QUOTA_VIOLATION錯誤碼傳回為 HRESULT 值。 WQL 關鍵字的限制取決於查詢的複雜程度。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 |
Windows Vista |
最低支援的伺服器 |
Windows Server 2008 |
標頭 |
|
類型程式庫 |
|
DLL |
|
CLSID |
CLSID_SWbemServices |
IID |
IID_ISWbemServices |