IWbemServices::ExecNotificationQueryAsync メソッド (wbemcli.h)
IWbemServices::ExecNotificationQueryAsync メソッドは、イベント通知を停止するために CancelAsyncCall が呼び出されるまで、指定された応答ハンドラーにイベントが提供されることを除き、IWbemServices::ExecNotificationQuery と同じタスクを実行します。
構文
HRESULT ExecNotificationQueryAsync(
[in] const BSTR strQueryLanguage,
[in] const BSTR strQuery,
[in] long lFlags,
[in] IWbemContext *pCtx,
[in] IWbemObjectSink *pResponseHandler
);
パラメーター
[in] strQueryLanguage
Windows Management でサポートされているクエリ言語のいずれかを含む有効な BSTR 。 これは "WQL" である必要があります。
[in] strQuery
イベント関連クエリのテキストを含む有効な BSTR 。 NULL にすることはできません。 WMI クエリ文字列の構築の詳細については、「WQL を使用したクエリ」 および 「WQL」を参照してください。
[in] lFlags
このパラメーターには、次の値を指定できます。
WBEM_FLAG_SEND_STATUS
このフラグは、クライアントの IWbemObjectSink::SetStatus の実装を通じて中間状態レポートを受信する要求を Windows Management に登録します。 プロバイダーの実装では、このフラグが動作を変更するための中間状態レポートをサポートする必要があります。
[in] pCtx
通常 は NULL です。 それ以外の場合は、要求されたイベントを返すプロバイダーが使用できる IWbemContext オブジェクトへのポインターです。 コンテキスト オブジェクトの値は、該当するプロバイダーのドキュメントで指定する必要があります。 このパラメーターの詳細については、「 WMI への呼び出しの作成」を参照してください。
[in] pResponseHandler
呼び出し元による IWbemObjectSink の実装へのポインター。 このハンドラーは、使用可能になると、クエリ結果セット内のオブジェクトを受け取ります。 イベントの受信を停止するには、呼び出し元は pResponseHandler の同じポインター値を使用して IWbemServices::CancelAsyncCall を呼び出す必要があります。 イベントが使用可能になると、指定された IWbemObjectSink::Indicate 実装が呼び出され、イベント オブジェクトが配信されます。 IWbemObjectSink::SetStatus メソッドは、最終的または終了条件がないため、いつでも呼び出されません。 呼び出しは、取り消されるまで無期限に実行されます。 エラー コードが返された場合、指定された IWbemObjectSink ポインターは使用されません。 WBEM_S_NO_ERRORが返された場合、操作の結果を示すために、ユーザーの IWbemObjectSink 実装が呼び出されます。 Windows Management は、WBEM_S_NO_ERRORが返された場合にのみポインターに 対して AddRefを 呼び出します。 エラー コードが返された場合、参照カウントはエントリ時と同じです。 このパラメーターの詳細については、「 メソッドの呼び出し」を参照してください。
戻り値
このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。 次の一覧は、 HRESULT 内に含まれる値の一覧です。
失敗した場合は、COM 関数 GetErrorInfo から使用可能な情報を取得できます。
その他のエラー コードは、 pResponseHandler パラメーターで指定されたオブジェクト シンクに返されます。
ネットワークの問題によって Windows Management へのリモート接続が失われる場合は、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 を含む) |
Library | 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 |