funzione USBD_SelectInterfaceUrbAllocateAndBuild (usbdlib.h)
La routine USBD_SelectInterfaceUrbAllocateAndBuild alloca e formatta una struttura CSV necessaria per una richiesta per selezionare un'interfaccia o modificarne l'impostazione alternativa.
Sintassi
NTSTATUS USBD_SelectInterfaceUrbAllocateAndBuild(
[in] USBD_HANDLE USBDHandle,
[in] USBD_CONFIGURATION_HANDLE ConfigurationHandle,
PUSBD_INTERFACE_LIST_ENTRY InterfaceListEntry,
[out] PURB *Urb
);
Parametri
[in] USBDHandle
Handle USBD recuperato dal driver client in una chiamata precedente alla routine USBD_CreateHandle .
[in] ConfigurationHandle
Handle restituito dallo stack di driver USB nelmembrooTo.ConfigurationSelectConfiguration.ConfigurationHandle della struttura DELL'OGGETTO, dopo che lo stack di driver ha completato una richiesta di configurazione selezionata.
InterfaceListEntry
Puntatore a una struttura di USBD_INTERFACE_LIST_ENTRY allocata dal chiamante. Per altre informazioni, vedere la sezione Osservazioni.
[out] Urb
Puntatore a unastrutturaae che che riceve l'oggetto RESTITUITO allocato da USBD_SelectInterfaceUrbAllocateAndBuild. Il driver client deve liberare l'OGGETTO QUANDO il driver ha terminato di usarlo chiamando USBD_UrbFree.
Valore restituito
La routine restituisce un codice NTSTATUS. I valori possibili includono, ad esempio, i codici di stato elencati nella tabella seguente.
Codice restituito | Descrizione |
---|---|
|
Chiamata di routine riuscita. |
|
Il chiamante ha passato NULL in uno dei parametri. |
|
Memoria insufficiente disponibile per completare la chiamata. |
Commenti
Il driver client deve chiamare la routine USBD_SelectInterfaceUrbAllocateAndBuild dopo aver selezionato una configurazione nel dispositivo. Al termine di una richiesta di configurazione select-configuration, il driver client riceve un handle di configurazione nel membro GestisciSelectConfiguration.ConfigurationHandle dell'OGGETTO. Tale handle deve essere specificato nel parametro ConfigurationHandle di USBD_SelectInterfaceUrbAllocateAndBuild.
Un driver client chiama USBD_SelectInterfaceUrbAllocateAndBuild per allocare e compilare un OGGETTO ODBC per una richiesta di interfaccia select per modificare l'impostazione alternativa di un'interfaccia, nella configurazione selezionata. Nella chiamata a USBD_SelectInterfaceUrbAllocateAndBuild, il driver client deve allocare e fornire un puntatore a una struttura USBD_INTERFACE_LIST_ENTRY . Il driver client deve impostare i membri della struttura come indicato di seguito:
- Il membro InterfaceDescriptor deve puntare a una struttura USB_INTERFACE_DESCRIPTOR che contiene il descrittore di interfaccia con l'impostazione alternativa da selezionare. Il descrittore di interfaccia è stato ottenuto in una richiesta precedente per ottenere un descrittore di configurazione e i descrittori di interfaccia e endpoint associati.
- Il membro Interface deve essere NULL.
Un driver client non può modificare le impostazioni alternative in più interfacce in una singola richiesta di interfaccia select. Ogni richiesta è destinata a una sola interfaccia.
Al termine della richiesta di interfaccia di selezione, lo stack di driver USB popola USBD_INTERFACE_INFORMATION con informazioni sulle pipe aperte per gli endpoint definiti nell'impostazione alternativa selezionata. Il driver client può ottenere tali handle di pipe controllando la matrice a cui punta il membro Pipe di USBD_INTERFACE_INFORMATION e archivia gli handle per le richieste di trasferimento dei dati future.
Il driver client può riutilizzare un'istanza di CRITERI allocata da USBD_SelectInterfaceUrbAllocateAndBuild solo per un'altra richiesta di interfaccia select per la stessa impostazione alternativa. Il driver client non deve riutilizzare l'OGGETTO CRITERI per qualsiasi altro tipo di richiesta o per un'altra richiesta di interfaccia select per un'impostazione alternativa diversa. Invece di allocare un nuovo OGGETTO, il riutilizzo di un'istanza esistente DI È l'approccio preferito in determinati scenari. Si consideri un dispositivo audio USB con un'interfaccia con due impostazioni alternative, definite per due requisiti di larghezza di banda. L'impostazione 0 è definita per la larghezza di banda zero; L'impostazione 1 è definita per usare una determinata quantità di larghezza di banda. Il driver client vuole passare di frequente tra le due impostazioni a seconda che il dispositivo sia in uso. Per implementare questo scenario, il driver client può allocare due URL per le richieste di interfaccia select, una per impostazione. Il driver client può usare (e riutilizzare) un'istanza DI WINDOWS per una richiesta di interfaccia select per selezionare l'impostazione 1 quando sono presenti suoni da inviare al dispositivo. Per risparmiare la larghezza di banda quando non sono presenti suoni, il driver client può usare (e riutilizzare) l'altro STRUMENTO per passare all'impostazione 0. Questa implementazione impedisce al driver client di allocare GLI URL per ognuna di queste richieste di interfaccia di selezione, ogni volta che il driver deve modificare l'impostazione.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Richiede WDK per Windows 8. È destinato a Windows Vista e versioni successive del sistema operativo Windows. |
Piattaforma di destinazione | Desktop |
Intestazione | usbdlib.h |
Libreria | Usbdex.lib |
IRQL | DISPATCH_LEVEL |