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

URB

Strutture USB

_URB_HEADER