本文說明 USB 要求區塊 (URB) ,並提供 USB 用戶端驅動程式如何使用 Windows 驅動程式模型 (WDM) 常式來配置、建置和提交 URB 至 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 要求,該要求會透過類型 IRP_MJ_INTERNAL_DEVICE_CONTROL 的 I/O 要求封包 (IRP) 傳遞至裝置。
USB 驅動程式堆疊完成處理 URB 之後,驅動程式堆疊會使用 URB 結構的 Status 成員來傳回 USB 特定的狀態碼。
備註
KMDF 和 UMDF 驅動程式開發人員應該使用個別的架構介面來與 USB 裝置通訊。 如需詳細資訊,請參閱 在 KMDF 驅動程式中使用 USB 裝置 和 在 UMDF 中處理 USB 介面。 這些主題討論用於 USB 裝置通訊的基礎 WDM 驅動程式介面。
本節中
| 主題 | 說明 |
|---|---|
| 配置和建置 URL | 本主題說明 USB 用戶端驅動程式如何使用 Windows 驅動程式模型 (WDM) 驅動程式常式來配置和格式化 URB,再將要求傳送至 Microsoft 提供的 USB 驅動程式堆疊。 |
| 如何提交 URB | 本主題描述將初始化的 URB 提交至 USB 驅動程式堆疊以處理特定要求所需的步驟。 |
| 最佳做法:使用 URL | 本主題描述客戶端驅動程式的最佳做法,以配置、建置和傳送 URB 至 Windows 8 隨附的 USB 驅動程式堆疊。 |