次の方法で共有


PnP 通知の概要

PnP マネージャーは、特定のイベントが特定のデバイスまたはシステムで一般的に発生したときに、ドライバーとアプリケーションが通知を受けるメカニズムを提供します。 ドライバーは、次のカテゴリのイベントの通知に対して登録できます。

  • EventCategoryDeviceInterfaceChange

    ドライバーがデバイス インターフェイス上のイベントのこのカテゴリに登録すると、PnP マネージャーは、次のイベントをドライバーに通知します。

    GUID_DEVICE_INTERFACE_ARRIVAL
    指定したクラスのデバイス インターフェイスが有効になっていることを示します。 たとえば、ユーザーがコンピューターに新しいディスクを追加し、ボリューム マネージャーが新しいボリューム (クラス "volume" のデバイス インターフェイス) を有効にします。

    GUID_DEVICE_INTERFACE_REMOVAL
    指定したクラスのデバイス インターフェイスが無効になっていることを示します。

    デバイス インターフェイスの詳細については、IoRegisterDeviceInterface および関連ルーチンを参照してください。

  • EventCategoryTargetDeviceChange

    ドライバーがデバイス上のイベントのこのカテゴリに登録すると、PnP マネージャーは、そのデバイスで次のイベントが発生したときにドライバーに通知します。

    GUID_TARGET_DEVICE_QUERY_REMOVE
    PnP マネージャーがデバイスのドライバーを削除しようとしていることを示します。 このイベントを引き起こすアクションとして、ユーザーが指定したデバイスをコンピューターから取り出すように要求した、ユーザーがデバイスのドライバー更新要求を発行したなど、いくつかのアクションが考えられます。 この通知は、デバイスのドライバーに対して、間近の取り出し操作を承認または拒否するよう要求します。

    GUID_TARGET_DEVICE_REMOVE_COMPLETE
    指定したデバイスがコンピューターから取り出されたか、ユーザーがデバイスのドライバーを変更していることを示します。

    GUID_TARGET_DEVICE_REMOVE_CANCELLED
    指定したデバイスで間近の取り出し操作が取り消されたことを示します。

    GUID_XXX (カスタム イベント)
    指定したデバイスでカスタム イベントが発生したことを示します。

    ドライバー ライターは、デバイスのカスタム イベントを定義できます。 ドライバー (または別の関連コンポーネント) がカスタム イベントが発生したことを PnP マネージャーに通知すると、PnP マネージャーは、デバイス上のターゲット デバイス変更通知に登録されたすべてのコンポーネントに通知します。

    インターフェイスの "パッシブ" な関心事項と見なすことができるデバイス インターフェイス変更の登録とは異なり、ターゲット デバイス変更の登録は、デバイスの "アクティブ" な関心事項を示します。

  • EventCategoryHardwareProfileChange

    このカテゴリには、次のイベントが含まれます。

    GUID_HWPROFILE_QUERY_CHANGE
    ユーザーがコンピューターのハードウェア プロファイルの変更を要求したことを示します。 PnP マネージャーは、この通知を使用して、システム操作を中断せずにハードウェア プロファイルを変更できるかどうかを登録済みコンポーネントに確認します。 登録済みコンポーネントは通常、これらのクエリ要求に成功します。

    GUID_HWPROFILE_CHANGE_COMPLETE
    コンピューターのハードウェア プロファイルが変更されたことを示します。 ドライバーがプロファイル固有の設定を維持している場合、このようなドライバーは、ハードウェア プロファイル変更後にこれらの設定を更新する必要があります。

    GUID_HWPROFILE_CHANGE_CANCELLED
    間近のハードウェア プロファイル変更が取り消されたことを示します。

PnP 通知は、カーネル モード コンポーネントに対して次のように機能します。

  1. ドライバーは、IoRegisterPlugPlayNotification を呼び出して、イベントのカテゴリに関する通知を登録します。

    PnP 通知コールバック ルーチンは、ドライバーが明示的に登録を削除するまで登録された状態を維持します。

  2. PnP マネージャーは、登録されているカテゴリのイベントが発生したときに、ドライバーのコールバック ルーチンを呼び出します。

  3. ドライバーは、IoUnregisterPlugPlayNotification を呼び出して、コールバック登録を削除します。

ドライバーは、同期イベントを生成したり、クローズの処理中に非同期イベントが発生するのを待機することはできません。

PnP 通知の詳細については、次のセクションを参照してください。

PnP 通知コールバック ルーチンの記述に関するガイドライン

PnP デバイス インターフェイス変更通知の使用

PnP ターゲット デバイス変更通知の使用

PnP ハードウェア プロファイル変更通知の使用

PnP カスタム通知の使用