WMI 要求の処理

すべてのドライバーは、WMI 要求を処理する DispatchSystemControl ルーチンのディスパッチ テーブル エントリ ポイントを設定する必要があります。 ドライバーが WMI データ プロバイダーとして登録されている場合、すべての WMI 要求を処理する必要があります。 それ以外の場合、ドライバーは、次の下位ドライバーにすべての WMI 要求を転送する必要があります。

すべての WMI IRP には、メジャー コード IRP_MJ_SYSTEM_CONTROL と、次のいずれかのマイナー コードがあります。

WMI カーネル モード コンポーネントは、ドライバーが WMI データ プロバイダーとして正常に登録された後 (通常は、ユーザー モードのデータ コンシューマーがドライバーのデバイスの WMI 情報を要求したとき)、いつでも WMI IRP を送信できます。 ドライバーが IoWMIRegistrationControl を呼び出すことで WMI データ プロバイダーとして登録する場合、後続の各 WMI 要求を次のいずれかの方法で処理する必要があります。

  • カーネル モードの WMI ライブラリ ルーチン WmiSystemControl を呼び出します。 ドライバーは、WmiSystemControl を呼び出し、動的インスタンス名を使用しないブロックと、静的インスタンス名が単一の基本名文字列または PDO のデバイス インスタンス ID に基づいているブロックに関する要求のみ処理できます。 詳しくは、「WmiSystemControl を呼び出して WMI IRP を処理する」をご覧ください。

  • DispatchSystemControl ルーチンで、ドライバーが IoWMIRegistrationControl の呼び出しで渡したデバイス オブジェクトへのポインターによってタグ付けされた要求を処理して完了し、他の IRP_MJ_SYSTEM_CONTROL 要求を次の下位ドライバーに転送します。 詳細については、「DispatchSystemControl ルーチンでの WMI IRP の処理」を参照してください。

WMI マイナー IRP の一覧については、「WMI マイナー IRP」をご覧ください。