Windows 8: USB の新機能

ここでは、Windows 8 のユニバーサル シリアル バス (USB) クライアント ドライバーの新機能と強化された機能についてまとめています。

USB の新機能の概要については、「USB ドライバーの新機能」をご覧ください。

USB 3.0 デバイス用の新しいドライバー スタック

Windows 8 には、USB 3.0 デバイスをサポートするための新しい USB ドライバー スタックが用意されています。この新しいスタックには、USB 3.0 デバイスが xHCI ホスト コントローラーに接続されると Windows で読み込まれるドライバーが含まれています。新しいドライバーは、カーネル モード ドライバー フレームワーク (KMDF) を基盤としており、USB 3.0 仕様で定義されている機能を実装します。新しいドライバーを以下に示します。

  • Usbxhci.sys
  • Ucx01000.sys
  • Usbhub3.sys

新しいドライバー スタックでは、以前のバージョンの Windows オペレーティング システムを基盤として作成およびテストされた、既にあるクライアント ドライバーとの互換性が維持されています。

USB ドライバー スタックのアーキテクチャのブロック図と、新しいドライバーの簡単な説明については、「USB ドライバー スタック アーキテクチャ」をご覧ください。

新しいスタックでサポートされる機能

USB 3.0 デバイス用の USB ドライバー スタックでは多数の新機能がサポートされています。一部の機能はクライアント ドライバーで構成可能です。それらの機能を以下に示します。

  • バルク エンドポイントの静的ストリーム。

    ストリームにより、クライアント ドライバーは、単一のバルク エンドポイントへの複数のデータ転送を実行できます。Windows 8 の Windows Driver Kit (WDK) には、新しいデバイス ドライバー インターフェイス (DDI) が用意されています。これにより、クライアント ドライバーは、バルク エンドポイントで最大 255 のストリームを開くことができます。ストリームが開かれたら、クライアント ドライバーは、特定のストリームとの間でデータ転送を実行できます。詳しくは、「USB バルク エンドポイントで静的ストリームを開閉する方法」をご覧ください。

  • MDL のチェーン

    クライアント ドライバーで、連続するバッファーではなく MDL のチェーンでペイロードを指定できます。これにより、物理メモリで転送バッファーをセグメント化できるようになり、バッファーの数、サイズ、および配置の制限がなくなります。 MDL のチェーンを使うことで、ダブル バッファリングが回避されるため、データ転送中のパフォーマンスを向上できます。詳しくは、「MDL のチェーンを送信する方法」をご覧ください。

  • 複合デバイスの機能の一時停止とリモート ウェイクアップ

    この機能により、複合デバイスのある機能を、他の機能とは無関係に、低電力状態にしたり、低電力状態を終了したりできます。機能ドライバーで、デバイスによって開始されるリモート ウェイクアップを要求することもできます。このような要求は、複合デバイスの親ドライバーによって処理される必要があります。Microsoft が提供する親ドライバー (Usbccgp.sys) では、機能の一時停止とリモート ウェイクアップ機能がサポートされます。WDK for Windows 8 では、代替の親ドライバーでこれらの機能を実装できるようにする DDI が用意されています。 詳しくは、「複合ドライバーで機能の一時停止を実装する方法」をご覧ください。

USB クライアント ドライバーのクライアント コントラクトのバージョン

クライアント コントラクトのバージョンにより、USB ドライバー スタックに要求を送るときにクライアント ドライバーが従う必要がある一連のルールが特定されます。従わない場合、予想外の動作が発生する場合があります。これらのルールについて詳しくは、「ベスト プラクティス: URB の使用」をご覧ください。

3.0 デバイス用 USB ドライバー スタックの機能を使うクライアント ドライバーは、クライアント コントラクトのバージョン USBD_CLIENT_CONTRACT_VERSION_602 で自身を識別する必要があります。このようなクライアント ドライバーは USB ドライバー スタックに登録する必要があります。登録後に、クライアント ドライバーは、基盤となる USB ドライバー スタックに照会を行い、スタックが必要な機能をサポートしているかどうかを判断する必要があります。これらの操作を容易にするために、WDK for Windows 8 には、次の KMDF 固有のメソッドと WDM ルーチンが含まれています。

使用事例KMDF ベース ドライバーで実行する必要がある操作WDM ドライバーで実行する必要がある操作
クライアント コントラクトのバージョンを指定し、USB ドライバー スタックに登録する WdfUsbTargetDeviceCreateWithParameters メソッドを呼び出します。 USBD_CreateHandle ルーチンを呼び出します。
特定の機能について照会する WdfUsbTargetDeviceQueryUsbCapability を呼び出し、照会する機能の GUID を指定します。 USBD_QueryUsbCapability を呼び出し、照会する機能の GUID を指定します。

 

URB の割り当てと構築のための新しいルーチン

Windows 8 では、URB の割り当て、フォーマット、および解放のための新しいルーチンが用意されています。URB 構造体は USB ドライバー スタックによって割り当てられます。基盤となるスタックが新しい USB ドライバー スタックである場合、URB は不透明な URB コンテキストとペアにされます。USB ドライバー スタックは URB コンテキストを使って URB の追跡と処理を向上します。ルーチンについて詳しくは、「URB の割り当てと構築」をご覧ください。

新しいルーチンを以下に示します。

前のリストに示されているルーチンの他に、URB の割り当てのための新しい KMDF 固有のメソッドがあります。KMDF ベースのクライアント ドライバーの場合は、以下を呼び出すことをお勧めします。

USB 3.0 ハブ用の新しいユーザー モード I/O 制御要求

Windows 8 には、USB 3.0 ハブとそれらのポートに関する情報を取得するためにアプリケーションで使うことができる新しい IOCTL が用意されています。新しい IOCTL を以下に示します。

前の I/O 要求を USB ドライバー スタックに送ることで、アプリケーションは次の一連の情報を取得します。

  • ハブ記述子
  • すべてのポートとコンパニオン ポートのプロパティ
  • ポートに接続されているデバイスの動作速度

WinUSB の新しい互換性 ID

デバイスの製造元は、ファームウェアに "WINUSB" (Microsoft OS 機能記述子) を追加して、Windows がそのデバイスを WinUSB デバイスとして認識するようにできます。Windows 8 では、デバイス識別子文字列として USB\MS_COMP_WINUSB を含むように Winusb.inf が変更されています。この変更により、Windows では、デバイスが検出されるとすぐに、デバイスの機能ドライバーとして Winusb.sys が自動的に読み込まれます。詳しくは、「WinUSB デバイス」をご覧ください。

USB クライアント ドライバー用の新しい Visual Studio テンプレート (*ベータ版の新機能)

Microsoft Visual Studio 2012 には、USB ユーザー モード ドライバーUSB カーネル モード ドライバーのテンプレートが含まれており、これらはそれぞれ UMDF および KMDF USB クライアント ドライバーのスタート コードを生成します。テンプレート コードは、USB ターゲット デバイス オブジェクトを初期化し、ハードウェアと通信できるようにします。詳しくは、次のトピックをご覧ください。

詳しくは、「USB クライアント ドライバーの開発の概要」をご覧ください。USB クライアント ドライバーの一般的なタスクを実行して、ドライバーを拡張してください。

UMDF ドライバーと KMDF ドライバーの実装方法については、Microsoft Press の書籍『Developing Drivers with the Windows Driver Foundation』または WHDC Web site (WHDC の Web サイト) をご覧ください。

UASP ドライバー

Windows 8 には、USB Attached SCSI Protocol (UASP) を実装した新しい USB 記憶域ドライバーがあります。この新しいドライバーでは、公式な USB 3.0 仕様に従い、バルク エンドポイントに静的ストリームを使います。

ブート サポート

Windows to Go 機能を使うと、フラッシュ ドライブまたは外部ドライブから Windows を起動できます。さまざまなコンピューター上で、これらのドライブからお使いの Windows のコピーを使って起動できます。

強化されたデバッグと診断機能

Windows 8 には、USB に関する問題をより迅速に診断できるように新しい USB 3.0 デバッグ ツールが用意されています。USB 3.0 ホスト コントローラーやデバイスの状態をチェックする新しい USB 3.0 カーネル デバッガー拡張機能があります。USB WPP やイベント トレースを使うと、より簡単に USB 操作を分析したり、USB デバイスに関する問題をトラブルシューティングしたりできます。Windows 8 では、USB 3.0 経由のデバッグがサポートされています。詳しくは、「USB 3.0 接続の手動セットアップ」をご覧ください。

デバイス マネージャーで表示される新しい USB 固有のエラー メッセージ

Windows では、接続された USB デバイスの列挙に失敗する場合があります。一般的に、列挙エラーが発生するのは、USB デバイスに送られた要求が失敗したり、デバイスが間違った記述子を返したりするときです。

Windows 8 では、このような列挙エラーが発生すると、デバイス マネージャー[全般] タブには、エラーの原因を示す USB 固有のエラー メッセージが表示されます。

エラー文字列の例を次に示します。

  • USB デバイス記述子に対する要求に失敗しました。
  • USB のアドレス設定要求に失敗しました。
  • USB ポートのリセット要求に失敗しました。
  • USB デバイスの前のインスタンスが削除されていませんでした。
  • USB デバイスから無効な USB 構成記述子が返されました。
  • USB デバイスから無効な USB デバイス記述子が返されました。
  • レジストリにアクセスできません。
  • USB 構成記述子に対する要求に失敗しました。
  • USB デバイスのポートの状態に対する要求に失敗しました。
  • USB デバイスから無効なシリアル番号文字列が返されました。
  • USB 設定 SEL 要求に失敗しました。
  • USB BOS 記述子に対する要求に失敗しました。
  • USB デバイス修飾子記述子に対する要求に失敗しました。
  • USB シリアル番号文字列記述子に対する要求に失敗しました。
  • USB 言語 ID 文字列記述子に対する要求に失敗しました。
  • USB 製品詳細文字列記述子に対する要求に失敗しました。
  • Microsoft OS 拡張構成記述子に対する要求に失敗しました。
  • Microsoft OS コンテナー ID 記述子に対する要求に失敗しました。
  • USB デバイスから無効な USB BOS 記述子が返されました。
  • USB デバイスから無効な USB デバイス修飾子記述子が返されました。
  • USB デバイスから無効な USB 言語 ID 文字列記述子が返されました。
  • USB デバイスから無効な Microsoft OS コンテナー ID 記述子が返されました。
  • USB デバイスから無効な Microsoft OS 拡張構成記述子が返されました。
  • USB デバイスから無効な製品説明文字列記述子が返されました。
  • USB デバイスから無効なシリアル番号文字列記述子が返されました。

関連トピック

USB ドライバーの新機能
ユニバーサル シリアル バス (USB) ドライバー

 

 

表示:
© 2015 Microsoft