ExecNotificationQueryWmi 関数

イベントを受信するクエリが実行されます。 呼び出しはすぐに返されます。呼び出し元は、返されたイベントの列挙子を逐一ポーリングできます。 返された列挙子を解放すると、クエリが取り消されます。

Note

この 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
[入力] Windows Management でサポートされている有効なクエリ言語を含む文字列。 これは、WMI Query Language の頭字語である "WQL" である必要があります。

strQuery
[入力] クエリのテキスト。 このパラメーターを null とすることはできません。

lFlags
[入力] この関数の動作に影響を与える次の 2 つのフラグの組み合わせ。 これらの値は、WbemCli.h ヘッダー ファイル内で定義されています。または、コード内で定数として定義することもできます。

定数 [値] 説明
WBEM_FLAG_RETURN_IMMEDIATELY 0x10 このフラグにより、半同期呼び出しが発生します。 このフラグが設定されていない場合、呼び出しは失敗します。 これは、イベントが連続して受信されるためで、ユーザーが返された列挙子をポーリングする必要があることを意味します。 この呼び出しを無制限にブロックすると、そのようなことが起きなくなります。
WBEM_FLAG_FORWARD_ONLY 0x20 関数によって順方向専用の列挙子が返されます。 通常、順方向専用の列挙子は、従来の列挙子よりも高速で、使用されるメモリが少なくなりますが、Clone の呼び出しは許可されません。

pCtx
[入力] 通常、この値は null です。 それ以外の場合は、要求されたイベントを提供しているプロバイダーが使用できる IWbemContext インスタンスへのポインターです。

ppEnum
[out] エラーが発生しなかった場合、呼び出し元がクエリの結果セット内のインスタンスを取得できるようにする列挙子へのポインターを受け取ります。 詳細については、「解説」セクションを参照してください。

authLevel
[in] 承認レベル。

impLevel
[in] 偽装レベル。

pCurrentNamespace
[入力] 現在の名前空間を表す IWbemServices オブジェクトへのポインター。

strUser
[in] ユーザー名。 詳細については、「ConnectServerWmi 関数」を参照してください。

strPassword
[入力] パスワード。 詳細については、「ConnectServerWmi 関数」を参照してください。

strAuthority
[入力] ユーザーのドメイン名。 詳細については、「ConnectServerWmi 関数」を参照してください。

戻り値

この関数によって返される次の値は、WbemCli.h ヘッダー ファイル内で定義されています。または、コード内で定数として定義することもできます。

定数 [値] 説明
WBEM_E_ACCESS_DENIED 0x80041003 ユーザーに、関数から返される可能性がある 1 つ以上のクラスを表示する権限がありません。
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 Management で提供されるよりも多くの情報が要求されます。 この 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 以降で使用可能

関連項目