共用方式為


USB 要求區塊 (URL)

本文說明 USB 要求區塊 (URB) ,並提供 USB 用戶端驅動程式如何使用 Windows 驅動程式模型 (WDM) 例程將 URI 配置、建置和提交至 USB 驅動程式堆疊的相關信息。

通用序列總線 (USB) 客戶端驅動程式無法直接與其裝置通訊。 相反地,客戶端驅動程式會建立要求,並將其提交至 USB 驅動程式堆疊進行處理。 在每個要求中,用戶端驅動程式都會提供稱為 USB 要求區塊的可變長度數據結構, (URB) URB 結構描述要求的詳細數據,也包含已完成要求狀態的相關信息。 用戶端驅動程式會透過 URB 執行所有裝置特定作業,包括資料傳輸。 用戶端驅動程序必須先使用要求的相關信息來初始化URB,才能將它提交至USB驅動程式堆疊。 針對特定類型的要求,Microsoft 會提供協助程式例程和宏,以配置 URB 結構,並填入 URB 結構的必要成員,並提供用戶端驅動程式提供的詳細數據。

每個 URB 都是以標準固定大小的標頭開頭, (_URB_HEADER) 其用途是識別所要求的作業類型。 _URB_HEADERLength 成員會指定 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 驅動程式堆疊。