USB 要求區塊 (URL)
本文說明 USB 要求區塊 (URB) ,並提供 USB 用戶端驅動程式如何使用 Windows 驅動程式模型 (WDM) 例程將 URI 配置、建置和提交至 USB 驅動程式堆疊的相關信息。
通用序列總線 (USB) 客戶端驅動程式無法直接與其裝置通訊。 相反地,客戶端驅動程式會建立要求,並將其提交至 USB 驅動程式堆疊進行處理。 在每個要求中,用戶端驅動程式都會提供稱為 USB 要求區塊的可變長度數據結構, (URB) 。 URB 結構描述要求的詳細數據,也包含已完成要求狀態的相關信息。 用戶端驅動程式會透過 URB 執行所有裝置特定作業,包括資料傳輸。 用戶端驅動程序必須先使用要求的相關信息來初始化URB,才能將它提交至USB驅動程式堆疊。 針對特定類型的要求,Microsoft 會提供協助程式例程和宏,以配置 URB 結構,並填入 URB 結構的必要成員,並提供用戶端驅動程式提供的詳細數據。
每個 URB 都是以標準固定大小的標頭開頭, (_URB_HEADER) 其用途是識別所要求的作業類型。 _URB_HEADER的 Length 成員會指定 URB 的大小,以位元組為單位。 Function 成員必須是一系列系統定義的URB_FUNCTION_XXX常數之一,可決定要求的作業類型。 例如,在數據傳輸的情況下,這個成員會指出傳輸的類型。 函式程式代碼URB_FUNCTION_CONTROL_TRANSFER、URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER和URB_FUNCTION_ISOCH_TRANSFER分別表示控制、大量/中斷和連續傳輸。 USB 驅動程式堆疊會使用 Status 成員傳回 USB 特定的狀態代碼。
若要提交 URB,用戶端驅動程式會使用 IOCTL_INTERNAL_USB_SUBMIT_URB 要求,該要求會透過 I/O 要求封包 (IRP) 類型 IRP_MJ_INTERNAL_DEVICE_CONTROL的方式傳遞至裝置。
完成 USB 驅動程式堆疊處理 URB 之後,驅動程式堆疊會使用 URB 結構的 Status 成員來傳回 USB 特定的狀態代碼。
注意
KMDF 和 UMDF 驅動程式開發人員應該使用個別的架構介面來與 USB 裝置通訊。 如需詳細資訊,請參閱使用適用於 KMDF 驅動程式的 USB 裝置 和使用 UMDF 中的 USB 介面。 這些主題討論用於 USB 裝置通訊的基礎 WDM 驅動程式介面。
本節內容
主題 | 描述 |
---|---|
配置和建置URL | 本主題描述 USB 用戶端驅動程式如何使用 Windows 驅動程式模型 (WDM) 驅動程式例程,在將要求傳送至 Microsoft 提供的 USB 驅動程式堆疊之前配置及格式化 URB。 |
如何提交 URB | 本主題描述將初始化的 URB 提交至 USB 驅動程式堆疊以處理特定要求所需的步驟。 |
最佳做法:使用 URB | 本主題描述客戶端驅動程式的最佳做法,以配置、建置和傳送 URB 至隨附於 Windows 8 的 USB 驅動程式堆疊。 |