共用方式為


USBD_SelectConfigUrbAllocateAndBuild函式 (usbdlib.h)

USBD_SelectConfigUrbAllocateAndBuild例程會配置並格式化需要用來選取 USB 裝置設定的 URB 結構。

注意在 Windows 8 中,USBD_SelectConfigUrbAllocateAndBuild會取代 USBD_CreateConfigurationRequestExUSBD_CreateConfigurationRequest
 

語法

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
STATUS_SUCCESS
要求成功。
STATUS_INVALID_PARAMETER
呼叫端傳遞了無效的參數值。 USBDHandleUrb 為 NULL。
STATUS_INSUFFICIENT_RESOURCES
記憶體不足,無法完成要求。

備註

呼叫 USBD_SelectConfigUrbAllocateAndBuild 之前,用戶端驅動程式必須執行下列工作:

  1. 取得組態中的介面數目。 這項資訊包含在 ConfigurationDescriptor 所指向之USB_CONFIGURATION_DESCRIPTOR結構的 bNumInterfaces 成員中。
  2. 建立 USBD_INTERFACE_LIST_ENTRY 結構的陣列。 陣列中的元素數目必須大於介面數目。 呼叫 RtlZeroMemory 來初始化陣列。
  3. 取得組態中每個介面的介面描述項 (或其替代設定) 。 您可以呼叫 USBD_ParseConfigurationDescriptorEx來取得這些介面描述項。
  4. 對於陣列中最後一個專案) 以外的每個 (元素,請將 InterfaceDescriptor 成員設定為介面描述元的位址。 針對陣列中的第一個專案,將 InterfaceDescriptor 成員設定為介面描述元的位址,代表組態中的第一個介面。 同樣地,針對陣列中的 n個元素,將 InterfaceDescriptor 成員設定為介面描述元的位址,代表組態中的 第 n個介面。
  5. 最後一個專案的 InterfaceDescriptor 成員必須設定為 NULL。
USBD_SelectConfigUrbAllocateAndBuild 會執行下列工作: 您可以使用 URB 結構的接收指標,將選取組態要求提交至 USB 驅動程式堆疊,以設定指定的組態。 此外,您可以使用數位中每個USBD_INTERFACE_INFORMATION結構的 Interface 成員來取得介面的相關信息。 在每個 USBD_INTERFACE_INFORMATION 結構內, Pipes 成員是 USBD_PIPE_INFORMATION 結構的陣列。 每個 USBD_PIPE_INFORMATION 結構都包含該介面中端點的 USB 驅動程式堆疊所開啟 (管道的相關信息) 。 您可以從數位取得管道句柄,並將其儲存在裝置的未來 I/O 要求。

規格需求

需求
最低支援的用戶端 需要 Windows 8的 WDK。 以 Windows Vista 和更新版本的 Windows 作業系統為目標。
目標平台 桌面
標頭 usbdlib.h
程式庫 Usbdex.lib
IRQL DISPATCH_LEVEL

另請參閱

USBD_CreateConfigurationRequestEx

USBD_CreateHandle