USB 開発の概要

ユニバーサル シリアル バス (USB) デバイスは、構成、インターフェイス、代替設定、エンドポイントを通じて、その機能と機能を定義します。 このトピックでは、これらの概念の概要について説明します。 詳細については、『ユニバーサル シリアル バス ドキュメント』の USB 仕様を参照してください。

このセクションの内容

トピック 説明
USB デバイスのレイアウト USB デバイスは、構成、インターフェイス、代替設定、エンドポイントを通じて、その機能と機能を定義します。 このトピックでは、これらの概念の概要について説明します。
標準の USB 記述子 USB デバイスは、USB 記述子と呼ばれるデータ構造内のそれ自体に関する情報を提供します。 このセクションでは、デバイス、構成、インターフェイス、およびエンドポイント記述子に関する情報と、それらを USB デバイスから取得する方法について説明します。
USB エンドポイントとそのパイプ USB デバイスには、データ転送に使用されるエンドポイントがあります。 ホスト側では、エンドポイントはパイプで表されます。 このトピックでは、これら 2 つの用語を区別します。
Windows における USB - よくあるご質問 このトピックでは、USB デバイスとドライバーの開発と Windows オペレーティング システムへの統合が初めてのドライバー開発者向けによく寄せられる質問を紹介します。

一般的な USB シナリオ

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

クライアント ドライバー UWP アプリ Windows デスクトップ アプリ
KMDF:
WdfUsbTargetDeviceCreateWithParameters

UMDF:
IWDFUsbTargetDevice
UsbDevice

USB デバイスを接続する方法
WinUsb_Initialize

WinUSB テンプレートに基づいて Windows デスクトップ アプリを記述する

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

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

WdfUsbTargetDeviceGetDeviceDescriptor
WdfUsbTargetDeviceRetrieveConfigDescriptor

UMDF:

IWDFUsbTargetDevice::RetrieveDescriptor

USB 記述子
UsbDevice.DeviceDescriptor
UsbConfiguration.Descriptors
UsbInterface.Descriptors
UsbInterfaceSetting.Descriptors

USB 記述子の入手方法
WinUsb_GetDescriptor
WinUsb_QueryInterfaceSettings
WinUsb_QueryPipe

デバイスに USB 記述子を照会する

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

クライアント ドライバー UWP アプリ Windows デスクトップ アプリ
KMDF:
WdfUsbTargetDeviceSelectConfig
WdfUsbTargetDeviceCreateUrb
(USBD_SelectConfigUrbAllocateAndBuild)
WdfUsbInterfaceSelectSetting

USB デバイス用の構成の選択方法

USB インターフェイスにおける代替設定の選択方法

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

IWDFUsbInterface::SelectSetting
UsbInterfaceSetting.SelectSettingAsync

USB インターフェイス設定の選択方法
WinUsb_SetCurrentAlternateSetting

3: 制御転送を送信して、デバイスを構成し、特定のデバイスに固有のベンダー コマンドを実行します。

クライアント ドライバー UWP アプリ Windows デスクトップ アプリ
KMDF:
WdfUsbTargetDeviceSendControlTransferSynchronously
WdfUsbTargetDeviceFormatRequestForControlTransfer
(USBD_SelectConfigUrbAllocateAndBuild)

UMDF:
IWDFUsbTargetDevice::FormatRequestForControlTransfer

USB コントロール転送の送信方法
SendControlInTransferAsync
SendControlOutTransferAsync

USB コントロール転送の送信方法
WinUsb_ControlTransfer

既定のエンドポイントにコントロール転送を送信する

4 — バルク転送を送信します。通常、大容量記憶装置で使用されます。

クライアント ドライバー UWP アプリ Windows デスクトップ アプリ
KMDF:
WdfUsbTargetPipeReadSynchronously
WdfUsbTargetPipeWriteSynchronously
WdfUsbTargetPipeFormatRequestForRead
WdfUsbTargetPipeFormatRequestForWrite

USB バルク転送要求の送信方法

継続的リーダーを使用して USB パイプからデータを読み取る方法

UMDF:
IUsbTargetPipeContinuousReaderCallbackReadComplete
IWDFUsbTargetPipe
IWDFUsbTargetPipe2
UsbBulkInPipe.InputStream
UsbBulkOutPipe.OutputStream

USB バルク転送要求の送信方法
WinUsb_WritePipe
WinUsb_ReadPipe

I/O 要求を発行する

5 - 割り込み転送を送信します。 データは、ハードウェア割り込みデータを取得するために読み取られます。

クライアント ドライバー UWP アプリ Windows デスクトップ アプリ
バルク転送と同じ UsbInterruptInPipe.DataReceived
UsbInterruptOutPipe.OutputStream

USB 割り込み転送要求の送信方法
バルク転送と同じ

6- 等時性転送を送信します。主にメディア ストリーミング デバイスに使用されます。

クライアント ドライバー UWP アプリ 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 セレクティブ サスペンドにより、デバイスが低電力状態になり、デバイスが動作状態に戻ります。

クライアント ドライバー UWP アプリ Windows デスクトップ アプリ
KMDF:
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS
WdfDeviceAssignS0IdleSettings

UMDF:
IWDFUsbTargetDevice::SetPowerPolicy
IWDFDevice2::AssignS0IdleSettings
IWDFDevice3::AssignS0IdleSettingsEx

デバイスをセレクティブ サスペンドに送信する方法
サポート対象外 WinUsb_SetPowerPolicy

WinUSB 電源管理

関連項目