Share via


PnP カスタム通知の使用

ドライバーは、ターゲット デバイスの変更通知メカニズムを使用して、デバイス上のカスタム イベントの通知を受け取ることができます。

カスタム イベントを定義するプログラマは、次の操作を行う必要があります。

  1. カスタム イベントの新しい GUID を定義します。

    Uuidgen または Guidgen (Microsoft Windows SDK に含まれます) を使用して GUID を生成します。 適切なヘッダー ファイルとドキュメントで GUID を発行します。

  2. カスタム イベントをトリガーするコードを記述します。

    カーネル モードでは、ドライバーは、カスタム GUID とデバイスの PDO へのポインターを使用して IoReportTargetDeviceChange を呼び出します。 カスタム イベントはカーネル モードからのみトリガーできます。

ドライバー ライターは、次のような手順でカスタム通知を使用します。

  1. ドライバー (またはアプリケーション) は、カスタム イベントの通知を登録します。

    カーネル モードでは、ドライバーは IoRegisterPlugPlayNotification を呼び出し、デバイス上の EventCategoryTargetDeviceChange に登録します。

    ユーザー モードでは、アプリケーションは RegisterDeviceNotification を使用して登録します。 詳細については、Windows SDK を参照してください。

  2. カーネル モード コンポーネントは、カスタム イベントをトリガーします。

  3. PnP マネージャーは、デバイスに登録されている通知ルーチンを呼び出します。

    PnP マネージャーは、登録済みのユーザー モード コールバック ルーチンを呼び出し、カーネル モード コールバック ルーチンを呼び出します。

  4. ユーザー モード通知が完了すると、カーネル モード ドライバー通知コールバック ルーチンがカスタム イベントに応答します。

    通知コールバック ルーチンの一般的なガイドラインについては、PnP 通知コールバック ルーチンを記述するためのガイドラインを参照してください。 これらのガイドラインの追加情報として、カスタム通知コールバック ルーチンは、コールバック ルーチン スレッド内からデバイスへのハンドルを開く必要はありません。