USBD_CreateConfigurationRequestEx函式 (usbdlib.h)
USBD_CreateConfigurationRequestEx例程會配置並格式化 URB,以選取 USB 裝置的設定。
USBD_CreateConfigurationRequestEx 取代 USBD_CreateConfigurationRequest。
語法
PURB USBD_CreateConfigurationRequestEx(
[in] PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
[in] PUSBD_INTERFACE_LIST_ENTRY InterfaceList
);
參數
[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 結構的呼叫 端配置陣列之第一個專案的指標。 陣列的長度取決於組態描述項中的介面數目。 陣列中的元素數目必須大於組態中的介面數目。 呼叫 RtlZeroMemory 來初始化陣列。 陣列中最後一個專案的 InterfaceDescriptor 成員必須設定為 NULL。
傳回值
USBD_CreateConfigurationRequestEx 配置 URB 結構、將它格式化為URB_FUNCTION_SELECT_CONFIGURATION要求 (選取組態要求) ,並傳回 URB 的指標。 然後,客戶端驅動程式可以使用傳回的 URB ,將 select-configuration 要求傳送至主機控制器驅動程式以設定設定。 當您完成使用 URB 時,必須釋出 URB 。
備註
如需如何建置選取組態要求和程式碼範例的資訊,請參閱 如何選取USB裝置的設定。
傳回的值是 URB 結構的指標,可用來將選取組態要求提交至主機控制器驅動程式,以設定指定的組態。
USB 驅動程式堆疊完成選取組態要求之後,您可以檢查 USBD_INTERFACE_INFORMATION 結構。 USBD_INTERFACE_INFORMATION的 Pipes 成員會指向USBD_PIPE_INFORMATION結構的數位。 USB 總線驅動程式會填入 USBD_PIPE_INFORMATION 結構的數位,其中包含與介面端點相關聯的管道相關信息。 用戶端驅動程式可以從 取得管道句柄 Pipes[i].PipeHandle
,並使用它們將 I/O 要求傳送至特定管道。
使用傳回的 URB 完成所有作業之後,您必須呼叫 ExFreePool 釋放 URB。
您可以從非分頁或分頁集區配置組態描述元和陣列。 如果 ConfigurationDescriptor 和 InterfaceList 所指向的記憶體是從非分頁集區配置,則此例程的呼叫端可以在 IRQL <= DISPATCH_LEVEL執行。 否則,呼叫端必須在 IRQL < DISPATCH_LEVEL執行。
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
標頭 | usbdlib.h (包含 Usbdlib.h) |
程式庫 | Usbd.lib |
IRQL | DISPATCH_LEVEL (请参阅备注) |