_URB_OPEN_STATIC_STREAMS Struktur (usb.h)
Die _URB_OPEN_STATIC_STREAMS-Struktur wird von einem USB-Clienttreiber verwendet, um Datenströme im angegebenen Massenendpunkt zu öffnen.
Rufen Sie zum Formatieren der URB die UsbBuildOpenStaticStreamsRequest-Funktion auf.
Syntax
struct _URB_OPEN_STATIC_STREAMS {
struct _URB_HEADER Hdr;
USBD_PIPE_HANDLE PipeHandle;
ULONG NumberOfStreams;
USHORT StreamInfoVersion;
USHORT StreamInfoSize;
PUSBD_STREAM_INFORMATION Streams;
};
Angehörige
Hdr
Die _URB_HEADER Struktur, die die URB-Headerinformationen angibt.
Hdr.Function- muss URB_FUNCTION_OPEN_STATIC_STREAMS sein, und Hdr.Length- muss sizeof(_URB_OPEN_STATIC_STREAMS)
sein.
PipeHandle
Ein undurchsichtiges Handle für die dem Endpunkt zugeordnete Pipe, die die zu öffnenden Datenströme unterstützt.
Der Clienttreiber ruft PipeHandle- aus der anforderung URB_FUNCTION_SELECT_CONFIGURATION oder URB_FUNCTION_SELECT_INTERFACE ab.
NumberOfStreams
Die Anzahl der zu öffnenden Datenströme. Der NumberOfStreams- Wert gibt die Anzahl der Elemente im Array an, auf die durch Streamsverwiesen wird. Dieser Wert muss größer als Null und kleiner als oder gleich der maximalen Anzahl von Datenströmen sein, die vom USB-Treiberstapel, dem Hostcontroller und dem Endpunkt auf dem Gerät unterstützt werden. Weitere Informationen finden Sie in den Hinweisen.
StreamInfoVersion
Version der USBD_STREAM_INFORMATION-Struktur. Muss auf URB_OPEN_STATIC_STREAMS_VERSION_100 festgelegt sein; andernfalls schlägt die Anforderung fehl, und der URB-Status ist USBD_STATUS_INVALID_PARAMETER.
StreamInfoSize
Größe der USBD_STREAM_INFORMATION Struktur.
StreamInfoSize- muss sizeof(USBD_STREAM_INFORMATION)
sein; andernfalls schlägt die Anforderung fehl, und der URB-Status ist USBD_STATUS_INFO_LENGTH_MISMATCH.
Streams
Zeiger auf ein vom Aufrufer zugewiesenes, initialisiertes Array von USBD_STREAM_INFORMATION Strukturen. Die Länge des Arrays hängt von der Anzahl der zu öffnenden Datenströme ab und muss mit dem wert NumberOfStreams übereinstimmen. Weitere Informationen finden Sie in den Hinweisen.
Bemerkungen
Um Datenströme (außer dem Standarddatenstrom) im Endpunkt für E/A-Vorgänge zu verwenden, öffnet der Clienttreiber die erforderlichen Datenströme, indem eine Open-Stream-Anforderung (URB_FUNCTION_OPEN_STATIC_STREAMS) an den USB-Treiberstapel gesendet wird. Für die Anforderung muss der Clienttreiber die URB formatieren, indem die _URB_OPEN_STATIC_STREAMS-Struktur initialisiert wird. Rufen Sie zum Formatieren der URB die UsbBuildOpenStaticStreamsRequest-Funktion auf.
Die maximale Anzahl von Datenströmen, die von einem Clienttreiber geöffnet werden können, muss kleiner oder gleich der maximalen Anzahl von Datenströmen sein, die vom USB-Treiberstapel, dem Hostcontroller und dem Massenendpunkt unterstützt werden. Rufen Sie USBD_QueryUsbCapabilityauf, um die maximale Anzahl von Datenströmen abzurufen, die vom Hostcontroller unterstützt werden. Der USB-Treiberstapel unterstützt bis zu 255 Streams. Wenn der Clienttreiber mehr als 255 Datenströme anfordert, schlägt USBD_QueryUsbCapability die Anforderung fehl. Um die maximale Anzahl von Datenströmen abzurufen, die vom Endpunkt unterstützt werden, prüfen Sie den Endpunkt-Begleitdeskriptor (siehe USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR in Usbspec.h).
Informationen zum Formatieren der URB für die Open-Stream-Anforderung und das Codebeispiel finden Sie unter Vorgehensweise Öffnen und Schließen statischer Datenströme in einem USB-Massenendpunkt.
Wenn der Clienttreiber mit der Verwendung der Datenströme fertig ist, kann der Treiber alle Datenströme schließen, die einem bestimmten Endpunkt zugeordnet sind, indem eine Close-Stream-Anforderung gesendet wird. Um die Anforderung zu senden, muss der Clienttreiber Informationen zum Endpunkt in der _URB_PIPE_REQUEST-Struktur angeben. Das Hdr- Mitglied von _URB_PIPE_REQUEST muss URB_FUNCTION_CLOSE_STATIC_STREAMS sein; das PipeHandle Member muss das Handle für den Endpunkt sein, der die verwendeten Datenströme enthält.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows 8 |
Header- | usb.h |
Siehe auch
Öffnen und Schließen statischer Datenströme in einem USB-Massenendpunkt