リムーバブル デバイス機能の概要
リムーバブル デバイス機能は、指定されたデバイス ノード (devnode) のIRP_MN_QUERY_CAPABILITIES関数コードに応答して、DEVICE_CAPABILITIES構造体にバス ドライバーが設定されるビット (リムーバブル) です。
バス ドライバーは、devnode とそのすべての子 devnode が、コンピューターの実行中に親開発ノードから物理的に削除、切断、または取り外すことができるデバイスを構成する場合に、devnode のリムーバブル デバイス機能を設定します。 通常、devnode トポロジの最上位の devnode である場合は、devnode をリムーバブルとしてマークする必要があります。
devnode でリムーバブル デバイス機能を正しく設定することが重要です。 バス ドライバーが列挙している devnode のコンテナー ID を指定できない場合、プラグ アンド プレイ (PnP) マネージャーはリムーバブル デバイス機能を使用して、デバイスに列挙されているすべての devnode のコンテナー ID を生成します。
たとえば、マウスなどの単一機能デバイスが USB 経由でコンピューターに接続されるとします。 この場合、USB バス ドライバーは新しいデバイスを検出し、それが USB ヒューマン インターフェイス デバイス (HID) であることを検出し、デバイスの USB HID 開発ノードを作成します。 HID devnode は、HID デバイスがマウスであることも検出し、HID 準拠マウスの子 devnode を作成します。 この時点で、マウスがインストールされ、コンピューター上で機能します。 どちらの新しい devnode も、独立した ドライバー スタックを使用します。
一般的な規則として、デバイスの最上位 (親) devode はリムーバブルとして設定する必要があります。一方、各子 devnode はリムーバブルとして設定しないでください。 前の例では、USB バス ドライバーは、USB HID devnode の場合、リムーバブル ビットを TRUE に設定し、子 HID 準拠のマウス devnode の場合は、リムーバブル ビットを FALSE に設定します。
次のデバイス マネージャースクリーン ショットは、汎用 USB マウスの devnode トポロジと、リムーバブルとしてマークされているマウスの devnode を示しています。