USBD_CreateConfigurationRequestEx-Funktion (usbdlib.h)
Die USBD_CreateConfigurationRequestEx Routine ordnet eine URB zu und formatiert diese, um eine Konfiguration für ein USB-Gerät auszuwählen.
USBD_CreateConfigurationRequestEx ersetzt USBD_CreateConfigurationRequest.
Syntax
PURB USBD_CreateConfigurationRequestEx(
[in] PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
[in] PUSBD_INTERFACE_LIST_ENTRY InterfaceList
);
Parameter
[in] ConfigurationDescriptor
Zeiger auf eine vom Aufrufer zugewiesene USB_CONFIGURATION_DESCRIPTOR Struktur, die den Konfigurationsdeskriptor für die auszuwählende Konfiguration enthält. In der Regel übermittelt der Clienttreiber eine URB des Typs URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE (siehe _URB_CONTROL_DESCRIPTOR_REQUEST), um Informationen zu Konfigurationen, Schnittstellen, Endpunkten, dem Anbieter und klassenspezifischen Deskriptoren von einem USB-Gerät abzurufen. Wenn der Clienttreiber USB_CONFIGURATION_DESCRIPTOR_TYPE als Deskriptortyp angibt, ruft die Anforderung alle Geräteinformationen in einer USB_CONFIGURATION_DESCRIPTOR-Struktur ab. Der Treiber übergibt dann den empfangenen Zeiger an die USB_CONFIGURATION_DESCRIPTOR-Struktur im ConfigurationDescriptor-Parameter .
[in] InterfaceList
Zeiger auf das erste Element eines aufruferseitig zugewiesenen Arrays von USBD_INTERFACE_LIST_ENTRY Strukturen. Die Länge des Arrays hängt von der Anzahl der Schnittstellen im Konfigurationsdeskriptor ab. Die Anzahl der Elemente im Array muss eins mehr als die Anzahl der Schnittstellen in der Konfiguration sein. Initialisieren Sie das Array, indem Sie RtlZeroMemory aufrufen. Das InterfaceDescriptor-Element des letzten Elements im Array muss auf NULL festgelegt werden.
Rückgabewert
USBD_CreateConfigurationRequestEx ordnet eine URB-Struktur zu, formatiert sie für die URB_FUNCTION_SELECT_CONFIGURATION-Anforderung (Select-Configuration Request) und gibt einen Zeiger auf die URB zurück. Der Clienttreiber kann dann die zurückgegebene URB verwenden, um die Select-Configuration-Anforderung an den Hostcontrollertreiber zu senden, um die Konfiguration festzulegen. Sie müssen die URB freigeben, wenn Sie sie verwendet haben.
Hinweise
Informationen zum Erstellen einer Select-Configuration-Anforderung und eines Codebeispiels finden Sie unter Auswählen einer Konfiguration für ein USB-Gerät.
Der zurückgegebene Wert ist ein Zeiger auf die URB-Struktur , mit der Sie eine Select-Configuration-Anforderung an den Hostcontrollertreiber übermitteln können, um die angegebene Konfiguration festzulegen.
Nachdem der USB-Treiberstapel die Select-Configuration-Anforderung abgeschlossen hat, können Sie die USBD_INTERFACE_INFORMATION Strukturen überprüfen. Das Pipes-Elementvon USBD_INTERFACE_INFORMATION verweist auf ein Array von USBD_PIPE_INFORMATION Strukturen. Der USB-Bustreiber füllt das Array der USBD_PIPE_INFORMATION-Strukturen mit Informationen zu den Pipes, die den Endpunkten der Schnittstelle zugeordnet sind. Der Clienttreiber kann Pipehandles von der Pipes[i].PipeHandle
abrufen und diese verwenden, um E/A-Anforderungen an bestimmte Pipes zu senden.
Nachdem Sie alle Vorgänge mit der zurückgegebenen URB abgeschlossen haben, müssen Sie die URB freigeben, indem Sie ExFreePool aufrufen.
Sie können den Konfigurationsdeskriptor und das Array aus einem nicht ausgelagerten oder ausgelagerten Pool zuordnen. Aufrufer dieser Routine können bei IRQL <= DISPATCH_LEVEL ausgeführt werden, wenn der Arbeitsspeicher, auf den von ConfigurationDescriptor und InterfaceList verwiesen wird, aus einem nicht ausgestellten Pool zugewiesen wird. Andernfalls müssen Aufrufer unter IRQL < DISPATCH_LEVEL ausgeführt werden.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
Header | usbdlib.h (include Usbdlib.h) |
Bibliothek | Usbd.lib |
IRQL | DISPATCH_LEVEL (siehe Hinweise) |
Weitere Informationen
Auswählen einer Konfiguration für ein USB-Gerät