Windows における USB- よくあるご質問

このトピックでは、USB デバイスとドライバーと Windows オペレーティング システムの開発と統合を初めるドライバー開発者に対してよく寄せられる質問を示します。

多くの USB 用語がほぼ同じ意味でスローされているのを聞いたことがあります。 これらはすべて何を意味しますか?

「USB 3.0 のおかげで、SuperSpeed USB サム ドライブを PC の xHCI ホスト コントローラーに接続し、ファイルをより速くコピーできます」と表示されます。

その文の USB 用語を理解しましょう。 USB 3.0、USB 2.0、および USB 1.0 は、USB 実装フォーラム の USB 仕様のリビジョン 番号を参照します。 USB 仕様は、ホスト PC と USB デバイスが相互に通信する方法を定義します。

バージョン番号は、最大転送速度も示します。 最新の仕様リビジョンは USB 3.0 です。これは、最大 5 Gbps の転送速度を指定します。 USB 1.0 では、低速 USB (最大 1.5 Mbps) と全速 USB (最大 12 Mbps) の 2 つの異なるデータ レートが定義されています。 USB 2.0 では、低速および全速デバイスのサポートを維持しながら、新しいデータ レートである高速 USB (480 Mbps) を定義します。 USB 3.0 は、以前に定義されたデータ レートすべてで引き続き動作します。 製品パッケージを見ている場合、SuperSpeed USB は最新の USB 3.0 デバイスを参照します。 ハイスピード USB は、高速 USB 2.0 デバイスを記述するために使用されます。 記述子を持たない USB は、低速および全速デバイスを指します。

USB プロトコルに加えて、USB ホスト コントローラーには、デバイスが接続されている PC 上のハードウェアの 2 つ目の仕様があります。 ホスト コントローラー インターフェイスの仕様では、ホスト コントローラーのハードウェアとソフトウェアの対話方法を定義します。 eXtensible ホスト コントローラー インターフェイス (xHCI) は、USB 3.0 ホスト コントローラーを定義します。 拡張ホスト コントローラー インターフェイス (EHCI) は、USB 2.0 ホスト コントローラーを定義します。 ユニバーサルホストコントローラー (UHCI) と Open Host Controller (OHCI) は、USB 1.0 ホストコントローラーの2つの代替実装です。

PC に USB 3.0 ポートがありますか。

USB 3.0 ポートは SuperSpeed USB ロゴでマークされているか、通常は青色で示されます。

usb ロゴ付きのポート

blue usb 3.0 ポート

新しい Pc には、USB 3.0 と USB 2.0 の両方のポートがあります。 SuperSpeed USB デバイスが最高速度で実行されるようにするには、USB 3.0 ポートを見つけて、そのポートにデバイスを接続します。 USB 2.0 ポートに接続されている SuperSpeed デバイスは、高速で動作します。

また、Device Manager で特定のポートが USB 3.0 ポートであることを確認することもできます。 Windows Vista 以降のバージョンの Windows では、Device Manager を開き、一覧からポートを選択します。

デバイスマネージャーの usb ホストコントローラー

拡張可能なホストコントローラーがある場合は、USB 3.0 がサポートされます。

拡張可能なホストコントローラーのドライバーをインストールする必要がありますか。

Windows 8 および Windows Server 2012 には、USB 3.0 のサポートが含まれています。

PC に USB 3.0 ポートがあり、Windows 8 より前のバージョンの Windows を実行している場合、ホストコントローラードライバーは PC の製造元から提供されます。 これらのドライバーを再インストールする必要がある場合は、製造元から入手する必要があります。

Windows 8 より前のバージョンの Windows を実行している PC に USB 3.0 コントローラーカードを追加した場合は、コントローラーカードの製造元から提供されているドライバーをインストールする必要があります。

Windows 8 では、Microsoft が提供する一連の USB 3.0 ドライバー (USB ドライバースタック) は、ほとんどのホストコントローラーで動作します。 Microsoft USB 3.0 ドライバースタックは、Fresco Logic FL1000 コントローラーでは機能しません。 FL1000 コントローラーがあるかどうかを判断するには、Device Manager を開き、[ ユニバーサルシリアルバスコントローラー] を展開します。 コントローラー ノードを選択して保持 (または右クリック) することで、コントローラーのプロパティを表示します。 [詳細 ] タブ で、一覧 の [ハードウェア ID] プロパティを選択します。 ハードウェア ID が PCI \ VEN _ 1B73&DEV 1000 で始まる場合は _ 、FL1000 です。 そのコントローラーの場合は、PC またはコントローラー カードの製造元からドライバーをダウンロードしてインストールします。

システムに複数のホスト コントローラーが表示される理由

PC に接続する USB デバイスに加えて、WEB カメラ、指紋リーダー、SD カード リーダーなど、USB を使用して接続される可能性がある多数のデバイスが PC 内に統合されています。 これらのすべてのデバイスを接続し、外部 USB ポートを提供するために、PC では複数の USB ホスト コントローラーがサポートされています。

USB 3.0 xHCI ホスト コントローラーは、すべての USB デバイス速度、SuperSpeed、高速、全速、低速と完全に下位互換性があります。 任意のデバイスを xHCI コントローラーに直接接続して、そのデバイスが動作すると予想できます。 EHCI コントローラーの場合はそうではありません。 USB 2.0 仕様ではすべての速度のデバイスがサポートされています。EHCI コントローラーは高速 USB デバイスのみをサポートします。 全速および低速の USB デバイスを動作するには、USB 2.0 ハブを介して EHCI コントローラーに接続する必要があります。または、デバイスをEHCI または OHCI コントローラーに接続する必要があります。

新しい PC の場合、PC によって公開されるほとんどの USB 2.0 ポートは、USB 2.0 ハブの下流です。 このハブは EHCI コントローラーに接続されています。 これにより、PC の USB 2.0 ポートをすべての速度のデバイスで動作できます。 SuperSpeed デバイスは、2.0 ポートに接続されている場合、高速デバイスとして動作します。

USB 2.0 仕様がリリースされた後、PC では、すべての速度のデバイスをサポートするために、ホスト コントローラーの組み合わせを使用しました。 1 つの USB 2.0 ポートは、EHCI ホスト コントローラーと、EHCI または OHCI ホスト コントローラーの 2 つのホスト コントローラーに接続されます。 デバイスを接続すると、ハードウェアは接続を 2 つのホストの 1 つに動的にルーティングします。 ルーチンは、デバイスの速度によって異なります。

USB 3.0 ハブを1つしか接続していない場合、Device Manager に2つのハブが表示されるのはなぜですか。

XHCI ホストコントローラーは、デバイスの速度で動作しますが、SuperSpeed hub は SuperSpeed デバイスでのみ機能します。 USB 3.0 ハブがすべての速度で動作することを保証するために、SuperSpeed ハブと USB 2.0 ハブの2つの部分があります。 USB 3.0 hub は、デバイスの速度に基づいて、SuperSpeed hub または 2.0 hub にデバイスを動的にルーティングすることで、すべての速度をサポートできます。

Device Manager を開き、 接続別にデバイス を表示し、拡張可能なホストコントローラーを見つけます。 1つの USB 3.0 ハブを USB 3.0 ポートに接続すると、コントローラーのルートハブの下流に2つのハブがあります。

デバイスマネージャーの usb 3.0 ハブ

次の例では、SuperSpeed USB ストレージデバイスと USB オーディオデバイスが両方とも USB 3.0 ハブに接続されています。 ストレージデバイスが SuperSpeed ハブの下流にあり、オーディオデバイスが USB 2.0 ハブの下流にあることを確認できます。

デバイスマネージャーでデバイスが接続されている usb 3.0 ハブ

2.0 ポートに接続されているデバイス用に読み込まれるドライバーのセットを教えてください。

ホストコントローラーの種類ごとに、異なるバイナリセットが読み込まれます。 Windows が読み込む USB ドライバースタックは、接続されているデバイスの速度ではなく、ホストコントローラーの種類に関連していることを理解しておくことが重要です。

このイメージでは、さまざまな種類の USB ホストコントローラーごとに読み込まれているドライバーを確認できます。

windows 8 の usb ドライバースタック

USB 3.0 ポートが xHCI コントローラーに正しくルーティングされている場合、Windows は xHCI ドライバースタック (USB 3.0 ドライバースタックとも呼ばれます) を読み込みます。

Usb 2.0 ポートが USB 2.0 ハブを介して EHCI コントローラーに接続されている場合、トラフィックは EHCI コントローラーを通過し、USB 2.0 ドライバースタックが読み込まれます。

USB ドライバースタックのドライバーの詳細については、「 Windows の usb ホスト側ドライバー」を参照してください。

PC の USB 2.0 ポートでコンパニオンコントローラーが使用されている場合、ポートがルーティングされるホストコントローラーはデバイスの速度に依存します。 たとえば、低速デバイスは、OHCI または OHCI コントローラーを介して接続し、USBUHCI または USB OHCI ドライバーを使用します。 PC は高速デバイスを EHCI コントローラーにルーティングするため、Windows では USBEHCI ドライバーが使用されます。

デバイスの速度が異なると、コントローラーに読み込まれるドライバーは決定されません。 ただし、デバイスの速度が異なると、使用されるコントローラーが決める場合があります。 コントローラーは常に同じドライバーを使用します。

操作方法 USB 3.0 デバイスが SuperSpeed として動作するかどうかを判断する必要がありますか?

最初Windows 8、USB 3.0 ポートと xHCI ホスト コントローラーを使用します。 SuperSpeed USB デバイスが xHCI ホスト コントローラーに接続されている場合、Windows 8 では、Windows 8 UI の特定の部分に "USB 3.0 に接続されています" というメッセージが表示されます。 デバイスが XHCI コントローラーではなく EHCI コントローラーに接続されている場合、メッセージは代わりに "デバイスは USB 3.0 に接続すると高速に実行できます" と表示されます。

これらの UI メッセージは、[PC の設定] で確認できます。

  1. [ポイント バー] を開きます (カーソルを画面の右上隅または右下隅にドラッグするか、「Windows キー + C」と入力するか、指で右からスワイプします)。
  2. [設定 ] を 選択し、[変更] をPC 設定。
  3. [デバイス]の下にある[デバイス]をPC 設定。

この画像は、USB 3.0 デバイスが SuperSpeed で動作している場合の UI メッセージを示しています。

[デバイス] がPC 設定され、[U S B 3.0 RAIDrive] が強調表示されている [デバイス] を示すスクリーンショット。

この画像は、USB デバイスが SuperSpeed より低いバス速度で動作している場合の UI メッセージを示しています。

[デバイス] が選択され、"U S B 3.0 RAIDrive" が強調表示され、"Device can perform faster when connected to U S S B 3.0" (U S B 3.0 に接続するとデバイスのパフォーマンスが向上する) というメッセージが強調表示されているスクリーンショット。

次の画像に示すように、デバイスとプリンターで同様のメッセージを表示できます。

"Connected to U S B 3.0" (U S B 3.0 に接続済み) というメッセージが表示されているデバイスが選択されている [ストレージ - デバイスとプリンター] を示すスクリーンショット。

高速で動作するスーパースピード デバイス

USB 3.0 デバイスが記憶装置の場合、次に示すように、ボリュームラベルが選択されると、エクスプローラーに類似のメッセージが表示されます。 メッセージを表示するには、 ビューの > 詳細 ペインを選択する必要があることに注意してください。

[エクスプローラー] で選択された superspeed U S B デバイスを表示するスクリーンショット。 "詳細" ウィンドウでは "U S B 3.0 に接続しました" というメッセージが強調表示されています。

superspeed usb デバイスが高速に動作

デバイスドライバーを作成する場合、Windows Driver Kit (WDK) に含まれている Usbview ツールは非常に便利です。 Windows 8 WDK の場合、Microsoft は USBView を更新して SuperSpeed USB 情報を表示します。 このツールを使用すると、デバイスが SuperSpeed で動作しているかどうかを判断できます。 このイメージは、SuperSpeed で動作している USB 3.0 デバイスを USBView で示しています。

superspeed で動作する superspeed usb デバイス

デバイスドライバーの開発者は、 usb ドライバースタック が、 ioctl _ usb _ GET _ NODE _ CONNECTION _ INFORMATION ( _ _ V2) と呼ばれる新しい IOCTL を公開しています。これは、usb 3.0 デバイスの速度情報を照会するために使用できます。

SuperSpeed USB デバイスが同等の高速 USB デバイスより高速ではないのはなぜですか。

一般に、USB 3.0 USB デバイスが高速 USB デバイスより高速ではない場合、SuperSpeed では実行されません。 SuperSpeed USB デバイスが USB 3.0 ポートに接続されている場合、次の理由により、SuperSpeed で動作しない可能性があります。

  • USB 2.0 ハブを使用している。

    ハブを使用している場合は、USB 3.0 ハブであることを確認します。 USB 2.0 ハブを使用している場合は、接続されている SuperSpeed USB デバイスは高速で動作します。 ハブを USB 3.0 ハブに置き換えるか、デバイスを USB 3.0 ポートに直接接続します。

  • USB 3.0 hub のファームウェアが最新ではありません。

    以前の USB 3.0 ハブは正常に機能しませんでした。 このため、Windows では、これらのハブの2.0 部分のみを使用します。 このデバイス マネージャー示すように"非機能" ハブを示す場合、Windows 8 はハブの 3.0 部分を使用しません。

    非機能のスーパースピード USB ハブ

    SuperSpeed デバイスを USB 3.0 ポートに直接接続するか、ハブのファームウェアを更新できます。 Windows 8新しいファームウェアを持つハブを認識します。

  • デバイスは USB 2.0 ケーブルで接続されています。

    デバイスの接続に使用するケーブルが USB 3.0 ケーブルである必要があります。 USB 3.0 ケーブルにシグナル整合性の問題がある可能性があります。 その場合、デバイスが高速に切り替える可能性があります。 その場合は、別の USB 3.0 ケーブルを使用する必要があります。

  • デバイス上のファームウェアが最新ではありません。

    製造元の Web サイトから最新バージョンを取得して、SuperSpeed USB デバイスのファームウェアを更新します。 一部の SuperSpeed USB デバイス製造元は、ファームウェアの更新として、デバイスで見つかったバグに対する修正プログラムをリリースします。

  • ホスト コントローラーのファームウェアが最新ではありません。

    USB 3.0 コントローラーのファームウェアを更新するには、PC 製造元のサイトから最新バージョンを取得するか、カードの製造元のサイトに追加します。 一部の USB 3.0 コントローラー製造元は、ファームウェアの更新として、コントローラーで見つかったバグに対する修正プログラムをリリースします。

  • システムの BIOS が最新ではありません。

    PC メーカーから最新バージョンを取得して、システムの BIOS を更新します。 一部のマザーボードでは、XHCI ホスト コントローラーに接続されているデバイスが BIOS によって誤って EHCI コントローラーにルーティングされる可能性があります。 この不適切なルーティングにより、SuperSpeed USB デバイスは強制的に高速で動作します。 BIOS 更新プログラムを使用すると、この問題を解決できます。

1つのハードウェアに複合デバイスと複合デバイスを用意することはできますか。

はい。 3ポートのバスを搭載したハブを搭載した Microsoft 自然キーボード Pro は、複合複合 USB デバイスの一例です。 デバイスには、ポート1に接続された複合デバイスがあります。 2つの追加のポートがエンドユーザーに公開されます。

ポート1に接続されているデバイスは、低速の複合デバイスです。 デバイスには、2つのインターフェイスがあります。どちらも、ヒューマンインターフェイスデバイス (HID) の USB 標準デバイスクラス定義に準拠しています。 複合デバイスは、最上位レベルのコレクションを使用して、1つの HID インターフェイスですべてのコレクションを多重化するのではなく、2つの HID インターフェイスを提供します。 この設計は、旧バージョンの Bios との互換性のために選択されました。

新しいポートに移動すると、USB デバイスの一部が再インストールされるのはなぜですか。

Windows 2000 以降のオペレーティングシステムでは、USB デバイスがあるポートから別のポートに移動されると、新しい物理デバイスオブジェクト (PDO) が作成されます。 ハードウェアが一意の USB シリアル番号を報告した場合、新しい PDO は作成されません。

同じ PDO を再利用し、デバイスを同じポートまたは新しいポートに再挿入するかどうかにかかわらず、デバイスのエクスペリエンスが変更されないようにするには、ハードウェアベンダーがデバイスにシリアル番号を格納する必要があります。 Windows ハードウェア認定プログラムの要件に従って、シリアル番号は、デバイスのインストール識別子を共有するすべてのデバイスで一意である必要があります。

USB 製品パッケージの設計に関する推奨事項の一覧がありますか。

USB (if) は、Microsoft および他の USB-IF メンバー企業と協力して、独立系ハードウェアベンダーがパッケージに含める推奨事項の一覧を作成しました。

詳細については、USB Web サイトを参照してください。

USB の高速および SuperSpeed については、「」を参照してください https://www.usb.org/

USB 3.0 デバイスをサポートするようにクライアントドライバーを書き換える必要がありますか。

すべての既存のクライアントドライバーは、低、完全、または高速のデバイスが USB 3.0 ポートに接続されている場合と同様に動作します。 Windows 8 では、既存のクライアントドライバーとの互換性が確保されています。

USB 3.0 ドライバー スタックでは、IRQL レベル、呼び出し元コンテキスト、およびエラー状態が維持されます。デバイスと対話する際の再試行の頻度とタイミングなど、既存のドライバーが引き続き動作する必要があります。 テストは依然として非常に重要です。

一般的なエラーは、次の理由で発生します。

  • SuperSpeed エンドポイント コンパニオン記述子が存在すると、ドライバーのエンドポイント記述子の解析が壊れます。
  • 速度の向上により、アプリケーション プロトコル レベルでタイミングの問題が発生する可能性があります。
  • エンドポイントでサポートされる最大パケット サイズは異なる場合があります。
  • 関数の電源管理により、選択的中断操作のタイミングが異なる場合があります。

Windows 7 以前のバージョンのオペレーティング システムでは、USB 3.0 ドライバー スタックはサード パーティによって提供されます。 そのため、サード パーティの USB ドライバー スタックを使用するためにドライバーをテストすることを強くお勧めします。

高速および SuperSpeed USB デバイスWindows 8新しいクライアント ドライバーは、新機能を選択する必要があります。

SuperSpeed ストレージ デバイスの使用、接続、または読み込みUaspstor.sysドライバーUsbstor.sys?

USB 接続 SCSI (UAS) プロトコルは、確立された USB 大容量ストレージ プロトコルである Bulk-Only-Transport (BOT) を使用してパフォーマンスを向上するように設計された新しい大容量ストレージ プロトコルです。 これは、プロトコルのオーバーヘッドを減らし、SATA ネイティブ コマンド キュー (NCQ) をサポートし、複数のコマンドを並列処理することで行います。 これを行うには、UAS はストリームと呼ばれる一括転送に新しい USB 3.0 機能を使用します。

既存の大容量記憶域ドライバーは、Usbstor.sys BOT プロトコルを使用します。 SuperSpeed USB デバイスを含むすべての速度のデバイスで動作します。

たとえばWindows 8、UAS プロトコルを使用する新しい大容量Uaspstor.sys ドライバーが含まれています。 ストリームは USB 3.0 では新しいため、Uaspstor.sys はハードウェアがストリームをサポートしている場合にのみストリームを使用できます (SuperSpeed USB デバイスは xHCI ホスト コントローラーに接続されています)。 ドライバーにはソフトウェア ストリームのサポートも含まれるので、ホストの種類に関係なく、高速で動作するデバイスにも読み込まれます。

大容量記憶装置を Windows 8 に接続し、そのデバイスで UA がサポートされている場合、Windows は Uaspstor.sys を読み込みます。 場合によっては、特定の xHCI ホストコントローラーのハードウェアストリームに関する既知の問題や、デバイスの UAS プロトコルの実装に関する既知の問題が考えられます。 このような場合、Windows は BOT プロトコルにフォールバックし、代わりに Usbstor.sys ドライバーを読み込みます。

Uaspstor.sys は、Windows 8 の新しいものです。 以前のバージョンの Windows には存在しません。

Microsoft はどの USB DWG クラスをサポートしていますか。

Windows は、USB デバイスの作業グループ (DWG) によって定義されているいくつかの USB クラスをサポートしています。 現在の USB クラス仕様およびクラスコードの一覧については、「」の USB DWG Web サイトを参照してください https://www.usb.org/documents

次の表は、Windows でサポートされている USB DWG クラスを示しています。また、各クラスをサポートする Windows のバージョンも示しています。

クラスの指定 bDeviceClass コード ドライバー名 Windows 対応
Bluetooth クラス 0xE0 Bthusb.sys Windows XP 以降
チップ/スマートカードインターフェイスデバイス (CCID) 0x0B Usbccid.sys

Windows Server 2008 以降

Windows Vista 以降にのみ適用される

Windows Server 2003

Windows XP

Windows 2000

Hub クラス 0x09 Usbhub.sys

Windows Server 2003 以降

Windows XP 以降

Windows 2000 以降

ヒューマン インターフェイス デバイス (HID) 0x03 Hidusb.sys

Windows Server 2003 以降

Windows XP 以降

Windows 2000 以降

大容量ストレージ クラス (MSC) 0x08 Usbstor.sys

Windows Server 2003 以降

Windows XP 以降

Windows 2000 以降

USB 接続 SCSI (UAS) 0x08 Uaspstor.sys

Windows Server 2012

Windows 8

印刷クラス 0x07 Usbprint.sys

Windows Server 2003 以降

Windows XP 以降

Windows 2000 以降

スキャン/イメージング (PTP) 0x06

WpdUsb.sys

Usbscan.sys

Windows Server 2003 以降

Windows XP 以降

Windows 2000 以降

メディア転送 (MTP) 0x06 WpdUsb.sys

Windows Server 2003 以降

Windows XP 以降

USB オーディオ クラス 0x01 Usbaudio.sys

Windows Server 2003 以降

Windows XP 以降

Windows 2000 以降

モデム クラス (CDC) 0x02 Usbser.sys

Windows Server 2003 以降

Windows XP 以降

Windows 2000 以降

Video クラス (UVC) 0x0E Usbvideo.sys

Windows Vista 以降にのみ適用される

Windows XP

*このドライバーは、オペレーティングシステムより後でリリースされている可能性があるため、このドライバーを読み込むには特別な指示が必要です。 Windows クラスドライバーは、DWG クラス仕様で説明されているすべての機能をサポートしていない場合があります。 この場合、ドライバーはクラスの一致に基づいて読み込まれません。 クラス仕様内で実装されている機能の詳細については、WDK のドキュメントを参照してください。

カスタム USB デバイスにどのデバイスセットアップクラスを使用する必要がありますか。

Microsoft では、ほとんどの種類のデバイスに対してシステム定義のセットアップクラスを提供しています。 システム定義のセットアップクラス Guid は、Devguid .h で定義されています。 詳細については、「WDK」を参照してください。 Windows クラス Guid の一覧については、次のトピックを参照してください。

独立系ハードウェアベンダーは、バスの種類ではなく、USB デバイスの種類に関連付けられているセットアップクラスを使用する必要があります。 Microsoft によって既存のクラス GUID が提供されていないデバイスの種類を開発している場合は、新しいデバイスセットアップクラスを定義できます。

Windows 8 では、" Usbdevice " という名前の新しいセットアップクラスが定義されています (classguid = {88 Bae032-5a81-49F0-bc3de4ff138216d6})。 デバイスの種類を開発している場合は、セットアップクラスの USB ではなく、デバイスを usbdevice に関連付けます。 Usbdevice クラスは、Windows Vista 以降のバージョンのオペレーティングシステムで動作します。

セットアップクラス usb (classguid = {36fc9e60-c465-11cf-8056-444553540000}) は、usb ホストコントローラーと usb ハブ専用に予約されており、他のデバイスカテゴリには使用できません。 このセットアップクラスを誤って使用すると、デバイスドライバが Windows ロゴテストに失敗する可能性があります。

USB デバイスを接続したときに CPU が C3 にならないのはなぜですか。

USB デバイスが接続されている場合、USB ホストコントローラーは、ダイレクトメモリアクセス (DMA) バスマスター操作であるフレームスケジューラをポーリングします。 バスマスタトラフィック、割り込み、またはその他のいくつかのシステムアクティビティなどの "中断イベント" は、cpu を C3 から除外します。これは、cpu のキャッシュを C3 に捜索ことができないためです。

この問題を回避するには、次の 2 つの方法があります。

  • ハードウェアの取り外し。

    ハードウェアは、ユニバーサル シリアル バスから電子的に切断される場合があります。 たとえば、USB リーダーからストレージ メディアを取り外した場合、USB リーダーは電子切断をエミュレートし、メディアが再挿入されると再接続できます。 この場合、ホスト コントローラーに USB デバイスがないので、C3 遷移が発生する可能性があります。

  • 選択的中断。

    Windows XP 以降のオペレーティング システムで使用できる唯一の代替手段は、USB 選択的中断をサポートすることです。 この機能により、システム自体が完全に動作する電源状態 (S0) のままである場合でも、デバイスがアイドル状態になったときに制御する USB デバイスをドライバーが中断できます。 選択的中断は、すべての USB ファンクション ドライバーでサポートされている場合に特に強力です。 1 つのドライバーでもサポートされていない場合、CPU は C3 を入力できません。 選択的中断の詳細については、WDK に関するページを参照してください。

選択的中断をサポートする USB クラス ドライバーは何ですか?

選択的中断をサポートするデバイスの USB クラス ドライバー Windows 8一覧を次に示します。

  • Bluetooth

    このドライバーは、Windows XP Service Pack 2 以降のバージョンの Windows を実行しているコンピューター上のデバイスを選択的に中断できます。 ドライバーでは、構成記述子に自己電源のウェイク ビットとリモート ウェイク ビットを設定するために、Bluetooth 無線が必要です。 アクティブな Bluetooth 接続が存在しない場合、ドライバーは Bluetooth 無線を選択的に中断します (D2)。

  • USB HID

    このドライバーは、HID デバイスを選択的に中断できます。 すべてのデバイス状態の変更に対してリモート ウェイク シグナルをトリガーする必要があります。 HID スタックで選択的中断を有効にするには、デバイスの特定の VID+PID に対して SelectiveSuspendEnabled レジストリ値を有効にする必要があります。 例については、「Input .inf」を参照してください。

    Windows 8 のコネクトスタンバイをサポートするシステムでは、このドライバーはシステムがコネクトスタンバイ状態のときにセレクティブサスペンド (D2) に入ります。 このドライバーは、システムをスリープ解除して画面をオンにすることができます。

  • USB ハブ

    このドライバーは、デバイスが接続されていない場合、またはそのハブに接続されているすべてのデバイスを選択的に中断できる場合に、ルートまたは外部ハブを選択的に中断できます。

  • USB モデム

    このドライバーは、アクティブなモデム接続が存在しない場合に、デバイスを選択的に中断できます。

  • USB ストレージ (ボット)

    このドライバーは、Windows 8 に接続されたスタンバイをサポートするシステム上のストレージデバイスを選択的に中断 (D3) することができます。 HID と同様に、すべての Windows 8 システムでセレクティブサスペンドを有効にするためのレジストリの上書きがあります。

  • USB ストレージ (UAS)

    このドライバーは、ディスクのタイムアウト期間中に記憶装置がアイドル状態になったときに、その記憶装置を選択的に中断 (D3) できます。

  • USB ビデオ

    このドライバーは、Windows Vista 以降のオペレーティングシステムで、web カメラを選択的に中断 (D3) できます。

  • USB オーディオ

    このドライバーは、コンピューターがバッテリ電源で動作しているときに、Windows 7 以降のオペレーティングシステム上の USB オーディオデバイスを選択的に中断 (D3) できます。

  • 複合 USB

    このドライバーは、すべての子が中断状態のときに、複合デバイスを選択的に中断 (D3) できます。 D3-コールドをサポートするシステムでは、すべての子が D3-コールドを選択する必要があります。

  • USB スマートカード

    このドライバーは、Windows 7 以降のオペレーティングシステムでは、既定で、スマートカードインターフェイスデバイスを選択的に中断 (D2) できます。

  • 汎用 USB 周辺機器 (WinUSB)

    このドライバーは、Windows Vista 以降のオペレーティング システムでは、既定で (D3) デバイスを選択的に中断できます。

  • WWAN: 3G または WiMax の東レス

    このドライバーは、デバイスを選択的に中断できます。 アクティブなサブスクリプションがある場合、デバイスは D2 と入力し、アクティブなサブスクリプションがない場合、デバイスは D3 と入力します。

USB デバイスが S3 から Windows を取り外できない理由

USB デバイスでは、次のようないくつかの理由により、S3 から Windows を取り外す必要があります。

  1. BIOS が正しくありません。

    最新の BIOS がコンピューターにインストールされていることを確認します。 コンピューターの最新の BIOS リビジョンを取得するには、OEM または ODM の Web サイトにアクセスしてください。

  2. ウェイクが有効になっていない BIOS。

    一部の BIOS では、S3 および S4 からのウェイクを無効にできます。 BIOS で S3 からのウェイクアップが有効になっているか確認します。

  3. USBBIOSx レジストリ キーが設定されていない。

    Windows XP のクリーン インストールには、USBBIOSx レジストリ キーが含め "ない"。 OEM または ODM が BIOS が S3 からウェイクアップできると検証する場合は、このレジストリ キーをに設定して、0x00を再起動します。

  4. ホスト コントローラーには S3 または S4 の電源が入ってない。

    PC の電源が低い状態の場合、PC がアドイン カードに電力を切り取る回数が多くなります。 アドイン カードに電源がない場合は、ウェイク イベントを検出できません。また、PC をウェイクアップできません。

詳細については、Windows XP 以降のバージョンの Windows ヘルプとサポート センターの USB トラブルシューティング ツールに関するページを参照してください。

Enhanced (USB 2.0) ホストコントローラーのドライバーをインストールする必要がありますか。

次のバージョンの Windows では、USB 2.0 拡張ホストコントローラーがサポートされています。

  • Windows Vista 以降にのみ適用される
  • Windows Server 2003 以降
  • Windows XP Service Pack 1
  • Windows 2000 Service Pack 4

メモ   Windows 2000 および Windows XP は、USB 2.0 ハードウェアを利用できるようになる前にリリースされていたため、これらのオペレーティングシステムのドライバーはサービスパックにリリースされました。 ドライバーをインストールするには:

  1. 最初の質問の答えで説明されている手順に従って、コンピューターに USB 2.0 ポートがあること、および拡張ホストコントローラー用のドライバーをインストールする必要があることを確認します。

  2. [Device Manager] ウィンドウで、最初の質問で説明されているように [ その他のデバイス ] セクションを展開し、[ Universal SERIAL Bus (USB) コントローラー] をダブルクリックします。

  3. [プロパティ] ダイアログボックスの [全般 ] タブで、[ ドライバーの再インストール] を選択します。

    ドライバーの再インストール

  4. 新しいハードウェアの追加ウィザードで、[ ソフトウェアを自動的にインストールする (推奨)] を選択し、[ 次へ] を選択します。 ウィザードの最後のページに移動し、[ 完了] を選択して、ウィザードを続行し、既定のオプションをすべて受け入れます。 インストールを完了するには、コンピューターの再起動が必要になる場合があります。

メモ   コンピューターに最新の更新プログラムがインストールされていることを確認するには、Windows Update 定期的にアクセスしてください。

"高速ではない USB ポートに接続されている高速 USB デバイス" という通知を無効にすることはできますか。

Windows XP 以降のバージョンの Windows では、高速 USB デバイスが高速でサポートされていない USB ポートに接続されている場合、ポップアップ通知が作成されます。 デバイスから最も高速なパフォーマンスを得るには、ユーザーが通知を選択し、画面の指示に従っている必要があります。

この通知を無効にするには、次の手順を実行します。

  1. この FAQ の最初の質問で説明されているように、Device Manager を開始します。
  2. [Device Manager] ウィンドウで、[ ユニバーサルシリアルバスコントローラー ] ノードを展開します。 タイトルに "Universal" または "Open" という単語が付いたホスト コントローラーを探します。 見つけた場合は、ダブルクリックします。
  3. [プロパティ ] ダイアログ ボックスの [詳細設定 ] タブで、[USB エラーについて教え ない] を選択します

  前の手順では、"HI-SPEED USB デバイスが非 HI-SPEED ポートに接続されている" のではなく、すべての USB 通知を無効にします。

USB 2.0 ハブはシングル TT またはマルチ TT ですか?

USB 2.0 ハブには、ハブ上のすべてのダウンストリーム向けポート (単一 TT) に対して 1 つのトランザクション トランスレーター (TT) を含め、またはハブ上のダウンストリーム向けポート (複数の TT) ごとに 1 つの TT を設定できます。

USB デバイス記述子 の bDeviceProtocol フィールドと USB インターフェイス記述子 の bInterfaceProtocol フィールドの値は、ハブがシングル TT またはマルチ TT かどうかを示します。

  • Single-TT。 bDeviceProtocol == 0x01
  • Multi-TT。 bDeviceProtocol == 0x02

Usbhub.sys 設定を使用して、マルチ TT モードまたはシングル TT モードを有効にします。 Windows XP 以降では、Usbhub.sysマルチ TT ハブでマルチ TT モードが常に有効になります。 TT レイアウトの詳細については、USB 2.0 仕様のセクション 11.14.1.3 と 11.23.1 を参照してください

USB シリアル番号で有効な文字またはバイトは何ですか?

USB デバイス記述子の iSerialNumber フィールドは、次のように、デバイスにシリアル番号と番号が格納されている場所を示します。

  • iSerialNumber == 0x00: USB デバイスにシリアル番号はありません。
  • iSerialNumber != 0x00: USB デバイスにはシリアル番号があります。 iSerialNumber に割り当てられた値 は、シリアル番号の文字列インデックスです。

デバイスにシリアル番号がある場合、シリアル番号は同じデバイスの各インスタンスを一意に識別する必要があります。

たとえば、2つのデバイス記述子が i DvendorIdproductbcddevice の各フィールドに同一の値を持っている場合、1つのデバイスを他のデバイスと区別するために、 iserialnumber フィールドが異なる必要があります。

プラグアンドプレイには、USB シリアル番号のすべてのバイトが有効である必要があります。 1バイトが無効である場合、Windows はシリアル番号を破棄し、シリアル番号がないかのようにデバイスを扱います。 次のバイト値は、USB シリアル番号には有効ではありません。

  • 0x2C.
  • 値が0x20 未満です。
  • 値が0x7F を超えています。

Iserialnumber 値の詳細については、「9.6.1 the USB 2.0 Specification」の「」セクションを参照してください。

Windows のローカライズされたビルドにおける文字列要求では、どのような LANGID が使用されますか。

USB デバイスは、USB デバイス記述子の iSerialNumber 化フィールドをシリアル番号の文字列インデックスに設定することによって、シリアル番号が存在することを示します。 シリアル番号を取得するために、Windows は言語識別子 (LANGID) が 0x0409 (米国英語) に設定された文字列要求を発行します。 Windows では、他の言語用にローカライズされた Windows のバージョンでも、常にこの LANGID を使用して USB シリアル番号を取得します。

デバイスのシリアル番号を抽出するために使用される LANGID

USB デバイスは、USB デバイス記述子の iSerialNumber 化フィールドをシリアル番号の文字列インデックスに設定することによって、シリアル番号が存在することを示します。 シリアル番号を取得するために、Windows は言語識別子 (LANGID) が 0x0409 (米国英語) に設定された文字列要求を発行します。 Windows では、他の言語用にローカライズされた Windows のバージョンでも、常にこの LANGID を使用して USB シリアル番号を取得します。

複合デバイスの複数のインターフェイスに番号を割り当てる方法

Windows では、1つ目の構成で複数のインターフェイスを持つ USB デバイスを複合デバイスとして扱います。

Windows XP Service Pack 1 以前のバージョンの Windows の場合:

  • インターフェイス番号は、0から始まる必要があります。
  • インターフェイス番号は連続して増加する必要があります。

Windows XP Service Pack 2 以降のバージョンの Windows では、インターフェイス番号を増やすだけで、連続する必要はありません。

インターフェイスの代替設定は、すべてのバージョンの Windows に対して次のように割り当てる必要があります。

  • インターフェイスの既定値は、常にゼロの代替設定です。
  • 追加の代替設定番号は、連続して増加する必要があります。

代替設定の詳細については、「USB 2.0 仕様 」のセクション 9.6.5 を参照してください

サービスによって課せられた主なUsbccgp.sys。

Usbccgp.sysでは、 次の複合デバイスがサポートされています。

  • Windows Me
  • Windows XP
  • Windows Server 2003
  • Windows Vista
  • Windows Server 2008

これら以降のバージョンの Windows では、複合デバイスの親ドライバーとして Usbhub.sys を読み込む場合は引き続き可能ですが、ハードウェアの互換性エラーが発生する可能性があるため、Microsoft はお勧めしません。 代 わりに、Usbccgp.sys する必要があります。

複合デバイスに適切なドライバーを確実に読み込むには、INF ファイルで Include ディレクティブと Needs ディレクティブを使用します。次に示します。

Include = USB.INF
Needs = Composite.Dev

ハードウェア デバイスとドライバーに適用される主な制限はUsbccgp.sys 次のとおりです

  • Usbccgp では、既定の構成である構成 0 だけがサポートされます。

  • Usbccgp では、Windows XP および Windows Server 2003 での選択的中断はサポートされていません。 この機能は、Windows Vista 以降のバージョンの Windows でのみサポートされています。   Usbccgp では、Windows XP SP1 以降のバージョンの Windows XP では選択的中断がサポートされますが、機能は制限されています。 これらのバージョンの Windows では、デバイスの各子関数に保留中のアイドル IRP がある場合にのみ、複合デバイスが選択的中断状態になります。 Usbccgp では、Windows XP RTM での選択的中断はサポートされていません

  • Usbccgp では、Windows XP SP2、Windows Server 2003 SP1、および Windows の以降のバージョンでのみ、インターフェイスアソシエーション記述子 (IAD) がサポートされます。

  • Usbccgp では、Windows XP SP2、Windows Server 2003 SP1、および Windows の以降のバージョンでのみ、非接続インターフェイス番号がサポートされます。

USB コアバイナリのデバッグトレースを有効に操作方法ますか?

WPP トレースメッセージをドライバーのパブリック PDB ファイルに追加して表示する方法については、ブログの投稿を参照してください。

USB デバイスと ETW イベントの詳細については、「 etw イベントを使用した usb デバイスの問題のデバッグ」を参照してください。

Windows はインターフェイスの関連付け記述子をサポートしていますか。

はい。 USB 2.0 インターフェイスアソシエーション記述子 (IAD) エンジニアリングの変更通知 (ECN) では、インターフェイスのグループ化とその代替設定を関数内で記述するための新しい標準メソッドが導入されました。 IAD を使用すると、1つの関数内で2つ以上の連続するインターフェイスと代替設定を識別できます。

Microsoft は現在、Ihv と協力して、IAD をサポートするデバイスを開発しています。 次のオペレーティングシステムでは、IAD がサポートされています。

  • Windows XP Service Pack 2 以降
  • Windows Server 2003 Service Pack 1 以降
  • Windows Vista

USB スタックはチェーンされた MDLs を URB に処理しますか。

この機能は、Windows に付属している USB 3.0 ドライバースタックでサポートされています。

ドライバーが1つの IRP に複数の URB を持つことはできますか。

いいえ。 この機能は、Windows に付属している USB スタックではサポートされていません。

Windows では USB 複合ハブがサポートされるのですか。

複合 USB デバイス (多機能 USB デバイスとも呼ばれます) は複数の機能を公開し、それぞれを独立したデバイスとして扱うことができます。 システムによって、USB 汎用親ドライバー Usbccgp.sys が読み込まれ、デバイスの機能を eaech するための親ドライバーとして機能します。 USB 汎用親ドライバーは、複合デバイスの機能を個別の USB デバイスとして列挙し、PDO を作成して、各関数のデバイススタックを構築します。

複合 USB デバイスは、ハブとして機能する関数を公開できません。 Windows では、このようなハブが正しく列挙されず、デバイスをインストールしようとするとシステムがクラッシュする可能性があります。