USBD_SelectConfigUrbAllocateAndBuild函式 (usbdlib.h)
USBD_SelectConfigUrbAllocateAndBuild例程會配置並格式化需要用來選取 USB 裝置設定的 URB 結構。
語法
NTSTATUS USBD_SelectConfigUrbAllocateAndBuild(
[in] USBD_HANDLE USBDHandle,
[in] PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
[in] PUSBD_INTERFACE_LIST_ENTRY InterfaceList,
[out] PURB *Urb
);
參數
[in] USBDHandle
在先前呼叫 USBD_CreateHandle 例程時,用戶端驅動程式所擷取的USBD句柄。
[in] ConfigurationDescriptor
呼叫端配置的 USB_CONFIGURATION_DESCRIPTOR 結構的指標,其中包含要選取之組態的組態描述項。 一般而言,用戶端驅動程式會提交類型的URB URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE (请参阅 _URB_CONTROL_DESCRIPTOR_REQUEST) ,以從USB裝置擷取設定、介面、連接點、廠商和類別特定描述項的相關信息。 當客戶端驅動程式將USB_CONFIGURATION_DESCRIPTOR_TYPE指定為描述項類型時,要求會擷取 USB_CONFIGURATION_DESCRIPTOR 結構中的所有裝置資訊。 驅動程序接著會將收到的指標傳遞至 ConfigurationDescriptor 參數中USB_CONFIGURATION_DESCRIPTOR結構。
[in] InterfaceList
USBD_INTERFACE_LIST_ENTRY 結構的呼叫 端配置陣列之第一個專案的指標。 陣列的長度取決於組態描述項中的介面數目。 如需詳細資訊,請參閱<備註>。
[out] Urb
URB 結構的指標,該結構會接收由 USBD_SelectConfigUrbAllocateAndBuild 配置的URB。 當驅動程式完成使用時,用戶端驅動程式必須藉由呼叫 USBD_UrbFree 來釋放 URB。
傳回值
USBD_SelectConfigUrbAllocateAndBuild例程會傳回NT狀態代碼。
可能的值包括但不限於下表所列的狀態代碼。
傳回碼 | Description |
---|---|
|
要求成功。 |
|
呼叫端傳遞了無效的參數值。 USBDHandle 或 Urb 為 NULL。 |
|
記憶體不足,無法完成要求。 |
備註
呼叫 USBD_SelectConfigUrbAllocateAndBuild 之前,用戶端驅動程式必須執行下列工作:
- 取得組態中的介面數目。 這項資訊包含在 ConfigurationDescriptor 所指向之USB_CONFIGURATION_DESCRIPTOR結構的 bNumInterfaces 成員中。
- 建立 USBD_INTERFACE_LIST_ENTRY 結構的陣列。 陣列中的元素數目必須大於介面數目。 呼叫 RtlZeroMemory 來初始化陣列。
- 取得組態中每個介面的介面描述項 (或其替代設定) 。 您可以呼叫 USBD_ParseConfigurationDescriptorEx來取得這些介面描述項。
- 對於陣列中最後一個專案) 以外的每個 (元素,請將 InterfaceDescriptor 成員設定為介面描述元的位址。 針對陣列中的第一個專案,將 InterfaceDescriptor 成員設定為介面描述元的位址,代表組態中的第一個介面。 同樣地,針對陣列中的 n個元素,將 InterfaceDescriptor 成員設定為介面描述元的位址,代表組態中的 第 n個介面。
- 最後一個專案的 InterfaceDescriptor 成員必須設定為 NULL。
- 建立 URB 並填入指定組態、其介面和端點的相關信息,並將要求類型設定為 URB_FUNCTION_SELECT_CONFIGURATION。
- 在每個介面的 URB 中填入 USBD_INTERFACE_INFORMATION 結構。
- 將呼叫端所提供USBD_INTERFACE_LIST_ENTRY數位中第 n個元素的 Interface 成員設定為 URB 中對應USBD_INTERFACE_INFORMATION結構的位址。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 需要 Windows 8的 WDK。 以 Windows Vista 和更新版本的 Windows 作業系統為目標。 |
目標平台 | 桌面 |
標頭 | usbdlib.h |
程式庫 | Usbdex.lib |
IRQL | DISPATCH_LEVEL |