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 クエリで使用できる AND
とOR
のキーワードの数には制限があります。 複雑なクエリで使用される WQL キーワードの数が多いと、WMI が WBEM_E_QUOTA_VIOLATION
(または 0x8004106c) エラー コードを HRESULT
値として返すことがあります。 WQL キーワードの制限は、クエリの複雑さによって異なります。
関数呼び出しが失敗した場合は、GetErrorInfo 関数を呼び出して追加のエラー情報を取得できます。
必要条件
:「システム要件」を参照してください。
ヘッダー: WMINet_Utils.idl
.NET Framework のバージョン: 4.7.2 以降で使用可能
関連項目
.NET
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示