ユニバーサル シリアル バス (USB)

ユニバーサル シリアル バス (USB) は、拡張可能かつホットプラグ可能なプラグ アンド プレイ シリアル インターフェイスを提供し、キーボード、マウス、ジョイスティック、プリンター、スキャナー、ストレージ デバイス、モデム、ビデオ会議用カメラなどの周辺機器に標準的な低コスト接続を確保します。PS/2、シリアル ポート、パラレル ポートなどのレガシ ポートを使用するすべての周辺機器は USB への移行が推奨されます。

USB-IF は、公式の USB 仕様、テスト仕様とツールを維持する SIG (Special Interest Group) です。

Windows オペレーティング システムには、公式の USB 仕様に準拠している USB ホスト コントローラー、ハブ、デバイス、およびシステムのネイティブ サポートが含まれます。Windows にはプログラミング インターフェイスも用意されており、これを使って、USB デバイスと通信するアプリケーションデバイス ドライバーを開発できます。

デバイス作成者向け USB ドライバー開発者向け USB アプリケーション開発者向け USB USB HCK 認定

Windows の USB

Windows 8.1: USB の新機能

Windows 8.1 の USB の新機能と機能強化の概要。

USB の FAQ

USB でサポートされている USB スタックと機能に関してドライバー開発者からよく寄せられる質問。

USB デバイスの Microsoft OS 記述子

Windows では、MS OS 記述子が定義されているため、Windows オペレーティング システムを実行しているシステムに接続したときに列挙機能が向上します。

Microsoft によって提供される USB ドライバー

ホスト コントローラーとハブ ドライバー - USB ドライバー スタック

Microsoft は、EHCI コントローラーと xHCI コントローラーに接続されているデバイスと連携するドライバーのコア スタックを提供します。

USB-IF デバイス クラス ドライバー

Windows には、多くの USB-IF approvide デバイス クラス、オーディオ、大容量記憶装置などのためのインボックス デバイス クラス ドライバーが用意されています。

USB 汎用関数ドライバー - WinUSB

Windows には、複合デバイスのカスタム デバイスと関数の関数ドライバーとして読み込むことができる Winusb.sys が用意されています。

複合デバイス用 USB 汎用親ドライバー - Usbccgp

複数の関数を備えた USB デバイスの親ドライバー。Usbccgp は、これらの関数のそれぞれに対して物理デバイス オブジェクト (PDO) を作成します。これらの個々の PDO は、それぞれの USB 関数ドライバーによって管理されます。この関数ドライバーは、Winusb.sys ドライバーまたは USB デバイス クラス ドライバーである場合があります。

Windows での USB デバイスのテスト

Windows での USB ハードウェア、ドライバー、アプリのテスト

USB のハードウェアまたはソフトウェアのテスト、操作や他のシステム イベントのトレースのキャプチャ、クライアント ドライバーまたはアプリケーションから送られた要求に対する USB ドライバー スタックの応答の監視に使用できるツールに関する情報を取得します。

ハードウェア認定キットのテストの概要を参照してください。ハードウェア ベンダーとデバイスの製造元では、これに従うと、Windows ハードウェア認定を申請するために USB デバイスとホスト コントローラーを準備できるようになります。

その他の USB 用リソース

公式の USB 仕様

USB プロトコルの完全な技術情報が記載されています。

Microsoft Windows USB コア チームのブログ

Microsoft USB チームによる投稿を確認できます。ブログでは、Windows PC にあるさまざまな USB ホスト コントローラーと USB ハブで動作する Windows USB ドライバー スタックに焦点を当てています。USB クライアント ドライバー開発者と USB ハードウェア設計者に役立つリソースにより、ドライバー スタックの実装を理解したり、一般的な問題を解決したり、トレースとログ ファイルを収集するツールの使い方を確認したりできます。

OSR Online の一覧 - ntdev

カーネル モード ドライバー開発者向けに OSR Online で管理されているディスカッションの一覧です。

ハードウェア開発に関する Windows デベロッパー センター

Windows オペレーティング システムで動作する USB デバイスやドライバーの開発に初めて携わる開発者からよく寄せられる質問を基にした、その他のリソースです。

USB プログラミングの概要...

USB クライアント ドライバーの作成 (KMDF、UMDF)

USB ドライバー開発について紹介します。デバイス用の USB ドライバーを提供するために最適なモデルを選ぶ方法について説明します。このセクションには、Microsoft Visual Studio Ultimate 2012 に含まれている USB テンプレートを使って、初めてのユーザー モードおよびカーネル モード USB ドライバーを記述するチュートリアルも掲載されています。

USB デバイスとの通信に関連する一連の作業 (Windows ストア アプリ)

Windows ストア アプリでの USB 機能の実装に関する詳しい手順を説明します。USB デバイスのためにこのようなアプリを作成するには、Microsoft Visual Studio 2013 と、Windows 8.1 用 Microsoft Windows Software Development Kit (SDK) が必要です。

WinUSB アプリケーションの作成 (Windows デスクトップ アプリ)

アプリケーションで WinUSB 関数を呼び出して USB デバイスと通信する方法について説明します。

一般的なプログラミングのシナリオ

ドライバーまたはアプリが、USB デバイスと通信するために実行する一般的なタスクの一覧。各タスクに必要なプログラミング インターフェイスに関するクイック ヒントを取得します。

USB programming reference

USB DDI (ドライバー開発)

USB クライアント ドライバーで使われる I/O 要求、サポート ルーチン、構造、インターフェイスの仕様。

Windows.Devices.Usb (Windows ストア アプリ)

Windows ストア アプリが USB デバイスとの通信に使用できる Windows ランタイム クラスを定義する名前空間の仕様。

WinUSB Functions (Windows デスクトップ アプリ)

Win32 アプリ C/C++ アプリで使われる WinUsb_Xxx 関数と構造の仕様。

USB サンプル

USB 用 Windows ストア アプリのサンプル

USB 用 Windows ドライバーのサンプル

開発ツール

Microsoft Visual Studio Professional のダウンロード
Visual Studio Ultimate のダウンロード
Windows Driver Kit (WDK) のダウンロード
Windows SDK のダウンロード
Windows ストア デバイス アプリ作成のための Visual Studio Express 2013

USB 関連ビデオ

USB デバイス用 Windows ストア アプリ
Windows 8 の USB 3.0 に関するビデオ
優れた USB 3.0 デバイスの構築に関するビデオ
Windows 8 の USB デバッグ イノベーションに関するビデオ (パート I、II、III)

学習用 USB ハードウェア

MUTT デバイス

MUTT デバイスと SuperMUTT デバイス、および付属のソフトウェア パッケージは、USB テストの HCK スイートに統合されています。USB コントローラー、デバイス、およびシステムの開発サイクル中に使用できる自動化されたテストが用意されています (特にストレス テスト)。

OSR USB FX2 学習キット

USB ドライバー開発が初めての場合。このドキュメント セットに含まれている USB サンプルを学習するには、このキットが最適です。この学習キットは、OSR Online Store のサイトから入手できます。

 

一般的な USB のシナリオ

1 - 通信用のデバイス ハンドルを取得します。そして、取得したハンドルまたはオブジェクトを使ってデータ転送を送信します。

クライアント ドライバーWindows ストア アプリWindows デスクトップ アプリ

KMDF: WdfUsbTargetDeviceCreateWithParameters

UMDF: IWDFUsbTargetDevice

UsbDevice

USB デバイスに接続する方法 (Windows ストア アプリ)

WinUsb_Initialize

WinUSB テンプレートに基づいて Windows デスクトップ アプリを作成する」をご覧ください。

 

USB 記述子を取得します。これで、デバイスの構成、インターフェイス、設定、およびエンドポイントに関する情報を取得します。

クライアント ドライバーWindows ストア アプリWindows デスクトップ アプリ

KMDF:

WdfUsbTargetDeviceGetDeviceDescriptor

WdfUsbTargetDeviceRetrieveConfigDescriptor

UMDF:

IWDFUsbTargetDevice::RetrieveDescriptor

USB 記述子」をご覧ください。

UsbDevice.DeviceDescriptor

UsbConfiguration.Descriptors

UsbInterface.Descriptors

UsbInterfaceSetting.Descriptors

USB 記述子を取得する方法 (Windows ストア アプリ)

WinUsb_GetDescriptor

WinUsb_QueryInterfaceSettings

WinUsb_QueryPipe

デバイスに対する USB 記述子の照会」をご覧ください。

 

2 - デバイスを構成します。そして、インターフェイスごとのアクティブな USB 構成および設定を選択します。

クライアント ドライバーWindows ストア アプリWindows デスクトップ アプリ

KMDF:

WdfUsbTargetDeviceSelectConfig

WdfUsbTargetDeviceCreateUrb

USBD_SelectConfigUrbAllocateAndBuild

WdfUsbInterfaceSelectSetting

USB デバイスの構成を選択する方法」をご覧ください。

USB インターフェイスの代替設定を選択する方法」をご覧ください。

UMDF:

構成の選択はサポートされていません。

IWDFUsbInterface::SelectSetting

UsbInterfaceSetting.SelectSettingAsync

USB インターフェイスの設定を選ぶ方法 (Windows ストア アプリ)

WinUsb_SetCurrentAlternateSetting

 

3 - コントロール転送を送信します。これで、デバイスを構成し、特定のデバイスに固有のベンダー コマンドを実行できます。

クライアント ドライバーWindows ストア アプリWindows デスクトップ アプリ

KMDF:

WdfUsbTargetDeviceSendControlTransferSynchronously

WdfUsbTargetDeviceFormatRequestForControlTransfer

USBD_SelectConfigUrbAllocateAndBuild

UMDF:

IWDFUsbTargetDevice::FormatRequestForControlTransfer

USB コントロール転送を送信する方法」をご覧ください。

SendControlInTransferAsync

SendControlOutTransferAsync

USB コントロール転送を送信する方法 (Windows ストア アプリ)

WinUsb_ControlTransfer

既定のエンドポイントへのコントロール転送の送信」をご覧ください。

 

4 - バルク転送を送信します。これは、通常、大量のデータを転送する大容量記憶装置で使われます。

クライアント ドライバーWindows ストア アプリWindows デスクトップ アプリ

KMDF:

WdfUsbTargetPipeReadSynchronously

WdfUsbTargetPipeWriteSynchronously

WdfUsbTargetPipeFormatRequestForRead

WdfUsbTargetPipeFormatRequestForWrite

USB バルク転送要求を送る方法

連続的なリーダーを使って USB パイプからデータを読み取る方法

UMDF:

IUsbTargetPipeContinuousReaderCallbackReadComplete

IWDFUsbTargetPipe

IWDFUsbTargetPipe2

UsbBulkInPipe.InputStream

UsbBulkOutPipe.OutputStream

USB バルク転送要求を送信する方法 (Windows ストア アプリ)

WinUsb_WritePipe

WinUsb_ReadPipe

I/O 要求の発行」をご覧ください。

 

5 - 割り込み転送を送信します。データが読み込まれて、ハードウェア割り込みデータが取得されます。

クライアント ドライバーWindows ストア アプリWindows デスクトップ アプリ

バルク転送と同じです。

UsbInterruptInPipe.DataReceived

UsbInterruptOutPipe.OutputStream

USB 割り込み転送要求を送信する方法 (Windows ストア アプリ)

バルク転送と同じです。

 

6 - アイソクロナス転送を送信します。これは、主にメディア ストリーミング デバイスに使われます。

クライアント ドライバーWindows ストア アプリWindows デスクトップ アプリ

KMDF:

WdfUsbTargetDeviceCreateIsochUrb

USB アイソクロナス エンドポイントにデータを転送する方法」をご覧ください。

UMDF: サポートされていません。

サポートされていません。

WinUsb_RegisterIsochBuffer

WinUsb_UnregisterIsochBuffer

WinUsb_WriteIsochPipeAsap

WinUsb_ReadIsochPipeAsap

WinUsb_WriteIsochPipe

WinUsb_ReadIsochPipe

WinUsb_GetCurrentFrameNumber

WinUsb_GetAdjustedFrameNumber

WinUSB デスクトップ アプリからの USB アイソクロナス転送の送信」をご覧ください。

 

7 - USB セレクティブ サスペンド。これで、デバイスが低電力状態になった後、デバイスが動作状態に戻ることができます。

クライアント ドライバーWindows ストア アプリWindows デスクトップ アプリ

KMDF:

WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS

WdfDeviceAssignS0IdleSettings

UMDF:

IWDFUsbTargetDevice::SetPowerPolicy

IWDFDevice2::AssignS0IdleSettings

IWDFDevice3::AssignS0IdleSettingsEx

セレクティブ サスペンドにデバイスを送信する方法」をご覧ください。

サポートされていません。

WinUsb_SetPowerPolicy

WinUSB の電源管理」をご覧ください。

 

 

 

表示:
© 2014 Microsoft