Condividi tramite


funzione USBD_CreateConfigurationRequestEx (usbdlib.h)

La routine USBD_CreateConfigurationRequestEx alloca e formatta un oggetto CSV per selezionare una configurazione per un dispositivo USB.

USBD_CreateConfigurationRequestEx sostituisce USBD_CreateConfigurationRequest.

Sintassi

PURB USBD_CreateConfigurationRequestEx(
  [in] PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
  [in] PUSBD_INTERFACE_LIST_ENTRY    InterfaceList
);

Parametri

[in] ConfigurationDescriptor

Puntatore a una struttura di USB_CONFIGURATION_DESCRIPTOR allocata dal chiamante che contiene il descrittore di configurazione per la configurazione da selezionare. In genere, il driver client invia un'URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE del tipo (vedere _URB_CONTROL_DESCRIPTOR_REQUEST) per recuperare informazioni su configurazioni, interfacce, endpoint, fornitore e descrittori specifici della classe da un dispositivo USB. Quando il driver client specifica USB_CONFIGURATION_DESCRIPTOR_TYPE come tipo di descrittore, la richiesta recupera tutte le informazioni sul dispositivo in una struttura di USB_CONFIGURATION_DESCRIPTOR . Il driver passa quindi il puntatore ricevuto alla struttura USB_CONFIGURATION_DESCRIPTOR nel parametro ConfigurationDescriptor .

[in] InterfaceList

Puntatore al primo elemento di una matrice allocata dal chiamante di strutture USBD_INTERFACE_LIST_ENTRY . La lunghezza della matrice dipende dal numero di interfacce nel descrittore di configurazione. Il numero di elementi nella matrice deve essere maggiore del numero di interfacce nella configurazione. Inizializzare la matrice chiamando RtlZeroMemory. Il membro InterfaceDescriptor dell'ultimo elemento nella matrice deve essere impostato su NULL.

Valore restituito

USBD_CreateConfigurationRequestEx alloca una struttura CSV , la formatta per la richiesta di URB_FUNCTION_SELECT_CONFIGURATION (richiesta di configurazione di selezione) e restituisce un puntatore all'oggetto CSV. Il driver client può quindi utilizzare l'oggetto RESTITUITO PER inviare la richiesta di configurazione select-configuration al driver del controller host per impostare la configurazione. Al termine dell'utilizzo, è necessario liberare l'OGGETTO).

Commenti

Per informazioni su come compilare una richiesta di configurazione selezionata e un esempio di codice, vedere How to Select a Configuration for a USB Device (Come selezionare una configurazione per un dispositivo USB).

Il valore restituito è un puntatore alla struttura DELL'OGGETTO CHE è possibile usare per inviare una richiesta di configurazione select al driver del controller host per impostare la configurazione specificata.

Dopo che lo stack di driver USB ha completato la richiesta di configurazione selezionata, è possibile esaminare le strutture di USBD_INTERFACE_INFORMATION . Il membro Pipes di USBD_INTERFACE_INFORMATION punta a una matrice di strutture USBD_PIPE_INFORMATION . Il driver del bus USB riempie la matrice di strutture USBD_PIPE_INFORMATION con informazioni sulle pipe associate agli endpoint dell'interfaccia. Il driver client può ottenere handle pipe da Pipes[i].PipeHandle e usarli per inviare richieste di I/O a pipe specifiche.

Dopo aver completato tutte le operazioni con il VALORE RESTITUITO, è necessario liberare l'OGGETTO ESEGUENDO UNA chiamata a ExFreePool.

È possibile allocare il descrittore di configurazione e la matrice da pool non di paging o di paging. I chiamanti di questa routine possono essere eseguiti in IRQL <= DISPATCH_LEVEL se la memoria a cui punta ConfigurationDescriptor e InterfaceList viene allocata da un pool non di paging. In caso contrario, i chiamanti devono essere eseguiti nel DISPATCH_LEVEL IRQL < .

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Intestazione usbdlib.h (include Usbdlib.h)
Libreria Usbd.lib
IRQL DISPATCH_LEVEL (vedere la sezione Osservazioni)

Vedi anche

Come selezionare una configurazione per un dispositivo USB

Informazioni di riferimento sulla programmazione dei driver di dispositivo USB

USBD_INTERFACE_INFORMATION

_URB_SELECT_CONFIGURATION