共用方式為


開始使用USB開發

通用序列總線 (USB) 裝置會透過設定、介面、替代設定和端點來定義其功能和功能。 本主題提供這些概念的高階概觀。 如需詳細資訊,請參閱 通用序列總線檔的 USB 規格。

本節內容

主題 描述
USB 裝置配置 USB 裝置會透過設定、介面、替代設定和端點來定義其功能和功能。 本主題提供這些概念的高階概觀。
標準 USB 描述項 USB 裝置會在稱為 USB 描述項的數據結構中提供本身的相關信息。 本節提供裝置、設定、介面和端點描述項的相關信息,以及從USB裝置擷取它們的方式。
USB 端點及其管道 USB 裝置具有用於數據傳輸的端點。 在主機端,端點會以管道表示。 本主題區分這兩個詞彙。
Windows 中的 USB - 常見問題 本主題針對不熟悉開發及整合 USB 裝置和驅動程式與 Windows 作業系統的驅動程式開發人員,提供常見問題。

常見的USB案例

1- 取得用於通訊的裝置句柄 ,並使用擷取的句柄或對象來傳送數據傳輸。

用戶端驅動程式 UWP app Windows 傳統型應用程式
KMDF
WdfUsbTargetDeviceCreateWithParameters

UMDF
IWDFUsbTargetDevice
UsbDevice

如何連線到 USB 裝置
WinUsb_Initialize

根據 WinUSB 範本撰寫 Windows 傳統型應用程式

USB 描述項 擷取,以取得裝置 () 、介面 () 、設定 () 及其端點 () 的相關信息。

用戶端驅動程式 UWP app 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 app Windows 傳統型應用程式
KMDF:
WdfUsbTargetDeviceSelectConfig
WdfUsbTargetDeviceCreateUrb
USBD_SelectConfigUrbAllocateAndBuild
WdfUsbInterfaceSelectSetting

如何選取 USB 裝置的設定。

如何在USB介面中選取替代設定

UMDF:
不支援設定選取

IWDFUsbInterface::SelectSetting
UsbInterfaceSetting.SelectSettingAsync

如何選取USB介面設定
WinUsb_SetCurrentAlternateSetting

3— 傳送控制傳輸 ,以設定裝置並執行特定裝置專屬的廠商命令。

用戶端驅動程式 UWP app Windows 傳統型應用程式
KMDF:
WdfUsbTargetDeviceSendControlTransferSynchronously
WdfUsbTargetDeviceFormatRequestForControlTransfer
USBD_SelectConfigUrbAllocateAndBuild

UMDF:
IWDFUsbTargetDevice::FormatRequestForControlTransfer

如何傳送 USB 控制傳輸
SendControlInTransferAsync
SendControlOutTransferAsync

如何傳送 USB 控制傳輸
WinUsb_ControlTransfer

將控制傳輸傳送至預設端點

4— 傳送大量傳輸,通常是由傳輸大量數據的大量儲存裝置使用。

用戶端驅動程式 UWP app 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 app Windows 傳統型應用程式
與大量傳輸相同 UsbInterruptInPipe.DataReceived
UsbInterruptOutPipe.OutputStream

如何傳送 USB 中斷傳輸要求
與大量傳輸相同

6— 傳送同步傳輸,主要用於媒體串流裝置。

用戶端驅動程式 UWP app 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 app Windows 傳統型應用程式
KMDF:
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS
WdfDeviceAssignS0IdleSettings

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

如何將裝置傳送至選擇性暫停
不支援 WinUsb_SetPowerPolicy

WinUSB 電源管理

另請參閱