コンテナー ID の実装のトラブルシューティング

デバイスとプリンターのユーザー インターフェイス (UI) で 1 つしかないのデバイスのインスタンスが 複数表示される場合、デバイスはコンテナー ID の要件を正しく実装していません。 この不適切な実装により、プラグ アンド プレイ (PnP) マネージャーは、1 つ以上のデバイス ノード (devnode) をグループ化して、そのデバイスの追加のデバイス コンテナーを作成します。

このような場合は、次の内容を確認する必要があります。

  • リムーバブル デバイスの機能は、デバイスに列挙されている各 devnode に対して正しく設定されていますか?

    これは、[デバイスとプリンター] UI の複数のデバイス インスタンスが表示される最も一般的な原因です。 デバイスの各 devnode に、リムーバブル デバイス機能が適切に設定されていることを確認します。 デバイスの最上位 (あるいは、 ) devnode はリムーバブルとして報告する必要があり、そのすべての子はリムーバブルではないとして報告する必要があります。 カスタム バス ドライバーの実装では、列挙する devnode のリムーバブル 関係を正しく割り当てる必要があります。

    デバイス マネージャーは、これらの問題を診断するための貴重なツールです。 次の手順に従って、完全な devnode 階層を調べることができます。

    1. [アイコン]を右クリックし、 [管理]をクリックします。 そして、結果の表示に一覧表示されている [システム ツール] から [デバイス マネージャー] を選択します。
    2. ドロップダウン メニューから [接続で表示] をクリックします。
    3. デバイスを構成する devnode を見つけます。 devnode ごとに、ノードを右クリックし、[プロパティ] をクリックします 。
    4. [詳細] タブの [プロパティ] ドロップダウン リストで、[機能] をクリックします。

    devnode の機能値の一覧に CM_DEVCAP_REMOVABLE フラグが含まれている場合、devnode はリムーバブルとしてマークされます。 その後、プラグ アンド プレイ (PnP) マネージャーは、devnode とその子ノード用に削除できない新しいデバイス コンテナーを作成します。

    リムーバブル デバイス機能の詳細については、「リムーバブル デバイス機能から生成されたコンテナー ID」を参照してください。

    デバイス マネージャー の使用の詳細については、「デバイスマネージャーの使用」を参照してください。

  • デバイスには、コンテナー ID またはその他の一意識別子がハードウェアに含まれていますか?

    ハードウェア内のコンテナー ID または一意識別子の形式が、指定されたバスの形式要件に準拠していることを確認します。 詳細については、「バス固有の一意の ID から生成されたコンテナー ID」を参照してください。

    デバイスの devnode がカスタム バス ドライバーによって列挙されている場合は、バス ドライバーが BusQueryContainerIDIRP_MN_QUERY_ID 要求に正しく応答することをチェックします。

  • デバイスは複数のバスで同時にコンピューターに接続されていますか?

    デバイスが 2 つ以上のバスによってコンピューターに同時に接続されている場合、デバイスの 2 つ以上のインスタンスが [デバイスとプリンター] UI に表示されることがあります。 これらのインスタンスには、デバイスが接続されているバスごとに 1 つ以上のデバイス インスタンスを持つことができます。 この問題を解決するには、デバイスがコンテナー ID またはデバイス固有の一意識別子を報告し、各バスで同じ値を報告していることを確認します。