USBD_CreateConfigurationRequestEx-Funktion (usbdlib.h)
Die USBD_CreateConfigurationRequestEx Routine weist eine URB- zu und formatiert sie, 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 ausgewählte Konfiguration enthält. In der Regel sendet 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
Zeigen Sie auf das erste Element eines aufrufergeteilten 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 mindestens eine Anzahl von Schnittstellen in der Konfiguration sein. Initialisieren Sie das Array, indem Sie RtlZeroMemoryaufrufen. Der InterfaceDescriptor Element des letzten Elements im Array muss auf NULL-festgelegt werden.
Rückgabewert
USBD_CreateConfigurationRequestEx eine URB--Struktur zuordnet, formatiert sie für die URB_FUNCTION_SELECT_CONFIGURATION Anforderung (Auswahlkonfigurationsanforderung) und gibt einen Zeiger auf die URB-zurück. Der Clienttreiber kann dann die zurückgegebene URB- verwenden, um die Auswahlkonfigurationsanforderung an den Hostcontrollertreiber zu senden, um die Konfiguration festzulegen. Sie müssen die URB- freigeben, wenn Sie die Verwendung abgeschlossen haben.
Bemerkungen
Informationen zum Erstellen einer Auswahlkonfigurationsanforderung 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 Auswahlkonfigurationsanforderung an den Hostcontrollertreiber senden können, um die angegebene Konfiguration festzulegen.
Nachdem der USB-Treiberstapel die Auswahlkonfigurationsanforderung abgeschlossen hat, können Sie die USBD_INTERFACE_INFORMATION Strukturen prüfen. Das Pipes Member von USBD_INTERFACE_INFORMATION verweist auf ein Array von USBD_PIPE_INFORMATION Strukturen. Der USB-Bustreiber füllt das Array von USBD_PIPE_INFORMATION Strukturen mit Informationen über die Rohre, die den Endpunkten der Schnittstelle zugeordnet sind. Der Clienttreiber kann Rohrziehpunkte vom Pipes[i].PipeHandle
abrufen und sie verwenden, um E/A-Anforderungen an bestimmte Rohre zu senden.
Nachdem Sie alle Vorgänge mit dem zurückgegebenen URB-abgeschlossen haben, müssen Sie die URB- freigeben, indem Sie ExFreePool-aufrufen.
Sie können den Konfigurationsdeskriptor und das Array aus nicht seitenseitigen oder ausgelagerten Pool zuordnen. Aufrufer dieser Routine können bei IRQL <= DISPATCH_LEVEL ausgeführt werden, wenn der Speicher, auf den ConfigurationDescriptor verweist, und InterfaceList- aus nicht seitenseitigem Pool zugewiesen wird. Andernfalls müssen Aufrufer bei IRQL-< DISPATCH_LEVEL ausgeführt werden.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Universal |
Header- | usbdlib.h (include Usbdlib.h) |
Library | Usbd.lib |
IRQL- | DISPATCH_LEVEL (Siehe Hinweise) |
Siehe auch
Auswählen einer Konfiguration für ein USB-Gerät