次の方法で共有


デバイス インターフェイス変更の通知登録

ドライバーは、IoRegisterPlugPlayNotification を呼び出してて、デバイス インターフェイスの到着イベントと削除イベントの通知を登録します。

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

  • EventCategoryDeviceInterfaceChangeEventCategory を指定します。

  • EventCategoryData は、デバイス インターフェイス クラスの GUID を指すこととします。

    インターフェイス クラスの GUID は、通常、インターフェイスの構造体や定数などを含むヘッダー ファイルに定義します。

  • PNPNOTIFY_DEVICE_INTERFACE_INCLUDE_EXISTING_INTERFACES の EventCategoryFlags を指定します。

    このフラグは、指定されたクラスの将来のデバイス インターフェイスの到着と出発のために CallbackRoutine を登録し、既にアクティブになっている関連するデバイス インターフェイスに対して CallbackRoutine を直ちに呼び出すよう PnP マネージャーに指示します。

    ドライバーは、IoGetDeviceInterfaces を呼び出して特定のクラスの既存のインターフェイスの一覧を取得し、そのコールバック ルーチンをこのフラグなしで登録できますが、フラグを使用する方が簡単で、想定されるタイミングの問題を回避できます。

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

デバイス インターフェイスの到着通知に応答してデバイスへのハンドルを開くドライバーは、デバイス上の EventCategoryTargetDeviceChange イベントに登録する必要があります。 (「PnPターゲット・デバイス変更通知の使用」を参照。)

ドライバーは、IoRegisterPlugPlayNotification によって返された NotificationEntry を使用して IoUnregisterPlugPlayNotification を呼び出して通知登録を取り消します。