次の方法で共有


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 メソッドでは空の結果セットを返します。 このメソッドでは、キー プロパティが strQuery パラメーターで要求されるかどうかにかかわらず、Key プロパティを返します。

WQL クエリで使用できる AND および OR キーワードの数には制限があります。 複雑なクエリで使用される WQL キーワードの数が多いと、WMI が WBEM_E_QUOTA_VIOLATION エラー コードを HRESULT 値として返すことがあります。 WQL キーワードの制限は、クエリの複雑さによって異なります。

要件

要件
サポートされている最小のクライアント
Windows Vista
サポートされている最小のサーバー
Windows Server 2008
Header
Wbemdisp.h
タイプ ライブラリ
Wbemdisp.tlb
[DLL]
Wbemdisp.dll
CLSID
CLSID_SWbemServices
IID
IID_ISWbemServices

関連項目

SWbemServices

メソッドの呼び出し

SWbemServices.Get