struttura _URB_OPEN_STATIC_STREAMS (usb.h)
La struttura _URB_OPEN_STATIC_STREAMS viene usata da un driver client USB per aprire flussi nell'endpoint bulk specificato.
Per formattare l'OGGETTO, chiamare la funzione UsbBuildOpenStaticStreamsRequest .
Sintassi
struct _URB_OPEN_STATIC_STREAMS {
struct _URB_HEADER Hdr;
USBD_PIPE_HANDLE PipeHandle;
ULONG NumberOfStreams;
USHORT StreamInfoVersion;
USHORT StreamInfoSize;
PUSBD_STREAM_INFORMATION Streams;
};
Members
Hdr
Struttura _URB_HEADER che specifica le informazioni sull'intestazione DELL'OGGETTO. Hdr.Function deve essere URB_FUNCTION_OPEN_STATIC_STREAMS e Hdr.Length deve essere sizeof(_URB_OPEN_STATIC_STREAMS)
.
PipeHandle
Handle opaco per la pipe associata all'endpoint che supporta i flussi da aprire.
Il driver client ottiene PipeHandle dalla richiesta URB_FUNCTION_SELECT_CONFIGURATION o URB_FUNCTION_SELECT_INTERFACE.
NumberOfStreams
Numero di flussi da aprire. Il valore NumberOfStreams indica il numero di elementi nella matrice a cui punta Streams. Questo valore deve essere maggiore di zero e minore o uguale al numero massimo di flussi supportati dallo stack di driver USB, dal controller host e dall'endpoint nel dispositivo. Per altre informazioni, vedere la sezione Osservazioni.
StreamInfoVersion
Versione della struttura USBD_STREAM_INFORMATION . Deve essere impostato su URB_OPEN_STATIC_STREAMS_VERSION_100; in caso contrario, la richiesta ha esito negativo e lo stato DELL'operazione è USBD_STATUS_INVALID_PARAMETER.
StreamInfoSize
Dimensioni della struttura USBD_STREAM_INFORMATION . StreamInfoSize deve essere sizeof(USBD_STREAM_INFORMATION)
; in caso contrario, la richiesta ha esito negativo e lo stato DELL'OGGETTO è USBD_STATUS_INFO_LENGTH_MISMATCH.
Streams
Puntatore a una matrice allocata dal chiamante e inizializzata di strutture USBD_STREAM_INFORMATION . La lunghezza della matrice dipende dal numero di flussi da aprire e deve essere uguale al valore NumberOfStreams . Per altre informazioni, vedere la sezione Osservazioni.
Commenti
Per usare flussi (diversi dal flusso predefinito) nell'endpoint per le operazioni di I/O, il driver client apre i flussi necessari inviando una richiesta di flusso aperto (URB_FUNCTION_OPEN_STATIC_STREAMS) allo stack di driver USB. Per la richiesta, il driver client deve formattare l'OGGETTO ESEGUENDO L'inizializzazione della struttura _URB_OPEN_STATIC_STREAMS . Per formattare l'OGGETTO, chiamare la funzione UsbBuildOpenStaticStreamsRequest .
Il numero massimo di flussi che possono essere aperti da un driver client deve essere minore o uguale al numero massimo di flussi supportati dallo stack di driver USB, dal controller host e dall'endpoint bulk. Per ottenere il numero massimo di flussi supportati dal controller host, chiamare USBD_QueryUsbCapability. Lo stack di driver USB supporta fino a 255 flussi. Se il driver client richiede più di 255 flussi, USBD_QueryUsbCapability non riesce la richiesta. Per ottenere il numero massimo di flussi supportati dall'endpoint, esaminare il descrittore complementare dell'endpoint (vedere USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR in Usbspec.h).
Per informazioni sulla formattazione della richiesta e dell'esempio di codice del flusso aperto, vedere How to Open and Close Static Streams in a USB Bulk Endpoint (Come aprire e chiudere flussi statici in un endpoint bulk USB).
Al termine dell'uso dei flussi, il driver può chiudere tutti i flussi associati a un determinato endpoint inviando una richiesta di close-stream. Per inviare la richiesta, il driver client deve specificare informazioni sull'endpoint nella struttura _URB_PIPE_REQUEST . Il membro Hdr di _URB_PIPE_REQUEST deve essere URB_FUNCTION_CLOSE_STATIC_STREAMS; Il membro PipeHandle deve essere l'handle per l'endpoint che contiene i flussi in uso.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8 |
Intestazione | usb.h |
Vedi anche
Come aprire e chiudere flussi statici in un endpoint bulk USB