次の方法で共有


ターゲット デバイス変更の通知登録

ドライバーは、IoRegisterPlugPlayNotification を呼び出して PnP ターゲット デバイス変更イベントの通知を登録します。

次の情報は、ターゲット デバイス変更通知で現在のルーチンを呼び出す場合に適用します。

  • EventCategoryTargetDeviceChangeEventCategory を指定します。

  • EventCategoryData は、通知が要求されるデバイスのファイル オブジェクトを指すこととします。

    ドライバーのコールバック ルーチンにファイル オブジェクトへのアクセス権が必要な場合、ドライバーは IoRegisterPlugPlayNotification を呼び出す前に、ファイル オブジェクトの参照を取り出す必要があります。

    ドライバーのコールバック ルーチンでファイル オブジェクトへのアクセス権が必要ない場合、ドライバーはオブジェクトを参照する必要はありません。

    ファイル オブジェクトを閉じると、ドライバーでその通知登録が削除されるまで、ドライバーはデバイスの通知を受信し続けます。 この設計により、ドライバーは、たとえば GUID_TARGET_DEVICE_REMOVE_CANCELLED イベントの通知を受け取ることができます。

  • PnP マネージャーがコールバック ルーチンに渡すドライバー定義 Context を指定します。

    ドライバーは、Context パラメーターで、ファイル オブジェクトの現在の状態に関する情報を維持管理する場合があります (閉じられたか、削除されたかなど)。

    ドライバーは、最初にデバイスを開くために使用したパスを格納するために Context を使用する場合もあります。 ドライバーは、取り消された削除操作の後にデバイスを再度開くためにこのパスを使用できます。 (詳細については、「GUID_TARGET_DEVICE_REMOVE_CANCELLED イベントの処理」を参照してください)。

ドライバーは、IoRegisterPlugPlayNotification によって返された NotificationEntry を使用して IoUnregisterPlugPlayNotification を呼び出して通知登録を削除します。 ドライバーが通知の登録時にファイル オブジェクトの参照を取り出し、その参照がまだ未処理の場合、ドライバーはその登録を削除した後に参照を解放する必要があります。