_URB_OPEN_STATIC_STREAMS Struktur (usb.h)
Die _URB_OPEN_STATIC_STREAMS-Struktur wird von einem USB-Clienttreiber verwendet, um Streams im angegebenen Massenendpunkt zu öffnen.
Um die URB zu formatieren, rufen Sie 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;
};
Member
Hdr
Die _URB_HEADER-Struktur , die die URB-Headerinformationen angibt. Hdr.Function muss URB_FUNCTION_OPEN_STATIC_STREAMS sein, und Hdr.Length muss sein sizeof(_URB_OPEN_STATIC_STREAMS)
.
PipeHandle
Ein undurchsichtiges Handle für die Pipe, die dem Endpunkt zugeordnet ist, der das Öffnen der Streams unterstützt.
Der Clienttreiber ruft PipeHandle aus der URB_FUNCTION_SELECT_CONFIGURATION- oder URB_FUNCTION_SELECT_INTERFACE-Anforderung ab.
NumberOfStreams
Die Anzahl der zu öffnenden Streams. Der NumberOfStreams-Wert gibt die Anzahl der Elemente im Array an, auf die von Streams verwiesen wird. Dieser Wert muss größer als 0 und kleiner als oder gleich der maximalen Anzahl von Streams sein, die vom USB-Treiberstapel, dem Hostcontroller und dem Endpunkt im 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 werden. Andernfalls schlägt die Anforderung fehl, und die URB-status wird USBD_STATUS_INVALID_PARAMETER.
StreamInfoSize
Größe der USBD_STREAM_INFORMATION Struktur. StreamInfoSize muss seinsizeof(USBD_STREAM_INFORMATION)
. Andernfalls schlägt die Anforderung fehl, und die URB-status wird 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 Streams ab und muss mit dem NumberOfStreams-Wert identisch sein. Weitere Informationen finden Sie in den Hinweisen.
Hinweise
Um Datenströme (außer dem Standardstream) im Endpunkt für E/A-Vorgänge zu verwenden, öffnet der Clienttreiber die erforderlichen Datenströme, indem er eine Open-Stream-Anforderung (URB_FUNCTION_OPEN_STATIC_STREAMS) an den USB-Treiberstapel sendet. Für die Anforderung muss der Clienttreiber die URB formatieren, indem er die _URB_OPEN_STATIC_STREAMS-Struktur initialisiert. Um die URB zu formatieren, rufen Sie die UsbBuildOpenStaticStreamsRequest-Funktion auf.
Die maximale Anzahl von Streams, die von einem Clienttreiber geöffnet werden können, muss kleiner oder gleich der maximalen Anzahl von Streams sein, die vom USB-Treiberstapel, dem Hostcontroller und dem Massenendpunkt unterstützt werden. Um die maximale Anzahl von Streams abzurufen, die vom Hostcontroller unterstützt werden, rufen Sie USBD_QueryUsbCapability auf. Der USB-Treiberstapel unterstützt bis zu 255 Streams. Wenn der Clienttreiber mehr als 255 Streams anfordert, schlägt USBD_QueryUsbCapability die Anforderung fehl. Um die maximale Anzahl von Streams abzurufen, die vom Endpunkt unterstützt werden, überprü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 Öffnen und Schließen statischer Streams in einem USB-Massenendpunkt.
Wenn der Clienttreiber die Datenströme verwendet hat, kann der Treiber alle Streams schließen, die einem bestimmten Endpunkt zugeordnet sind, indem er eine Close-Stream-Anforderung sendet. Um die Anforderung zu senden, muss der Clienttreiber Informationen zum Endpunkt in der _URB_PIPE_REQUEST-Struktur angeben. Das Hdr-Element von _URB_PIPE_REQUEST muss URB_FUNCTION_CLOSE_STATIC_STREAMS sein. Das PipeHandle-Element muss das Handle für den Endpunkt sein, der die verwendeten Streams enthält.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 8 |
Kopfzeile | usb.h |
Weitere Informationen
Öffnen und Schließen statischer Streams in einem USB-Massenendpunkt