共用方式為


USB開發入門

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

本節中

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

常見的USB案例

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

用戶端驅動程式 UWP 應用程式 Windows 桌面應用程式
KMDF
WdfUsbTargetDeviceCreateWithParameters

UMDF
IWDFUsbTargetDevice
UsbDevice

如何連線到 USB 裝置
WinUsb_Initialize

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

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

用戶端驅動程式 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 電源管理

另請參閱