Compartir a través de


estructura _URB_OPEN_STATIC_STREAMS (usb.h)

El controlador de cliente USB usa la estructura _URB_OPEN_STATIC_STREAMS para abrir secuencias en el punto de conexión masivo especificado.

Para dar formato al URB, llame a la función UsbBuildOpenStaticStreamsRequest .

Sintaxis

struct _URB_OPEN_STATIC_STREAMS {
  struct _URB_HEADER       Hdr;
  USBD_PIPE_HANDLE         PipeHandle;
  ULONG                    NumberOfStreams;
  USHORT                   StreamInfoVersion;
  USHORT                   StreamInfoSize;
  PUSBD_STREAM_INFORMATION Streams;
};

Miembros

Hdr

Estructura _URB_HEADER que especifica la información del encabezado URB. Hdr.Function debe ser URB_FUNCTION_OPEN_STATIC_STREAMS y Hdr.Length debe ser sizeof(_URB_OPEN_STATIC_STREAMS).

PipeHandle

Identificador opaco de la canalización asociada al punto de conexión que admite las secuencias que se van a abrir.

El controlador cliente obtiene PipeHandle de la solicitud de URB_FUNCTION_SELECT_CONFIGURATION o URB_FUNCTION_SELECT_INTERFACE.

NumberOfStreams

Número de secuencias que se van a abrir. El valor NumberOfStreams indica el número de elementos de la matriz a la que apunta Streams. Este valor debe ser mayor que cero y menor o igual que el número máximo de secuencias admitidas por la pila de controladores USB, el controlador de host y el punto de conexión del dispositivo. Para obtener más información, vea la sección Comentarios.

StreamInfoVersion

Versión de la estructura USBD_STREAM_INFORMATION . Debe establecerse en URB_OPEN_STATIC_STREAMS_VERSION_100; de lo contrario, se produce un error en la solicitud y se USBD_STATUS_INVALID_PARAMETER el estado de urb.

StreamInfoSize

Tamaño de la estructura USBD_STREAM_INFORMATION . StreamInfoSize debe ser sizeof(USBD_STREAM_INFORMATION); de lo contrario, se produce un error en la solicitud y el estado de urb es USBD_STATUS_INFO_LENGTH_MISMATCH.

Streams

Puntero a una matriz asignada por el autor de la llamada e inicializada de estructuras USBD_STREAM_INFORMATION . La longitud de la matriz depende del número de secuencias que se van a abrir y debe ser la misma que el valor NumberOfStreams . Para obtener más información, vea la sección Comentarios.

Comentarios

Para usar secuencias (distintas de la secuencia predeterminada) en el punto de conexión para las operaciones de E/S, el controlador cliente abre las secuencias necesarias mediante el envío de una solicitud de flujo abierto (URB_FUNCTION_OPEN_STATIC_STREAMS) a la pila del controlador USB. Para la solicitud, el controlador de cliente debe dar formato al URB inicializando la estructura _URB_OPEN_STATIC_STREAMS . Para dar formato al URB, llame a la función UsbBuildOpenStaticStreamsRequest .

El número máximo de secuencias que puede abrir un controlador cliente debe ser menor o igual que el número máximo de secuencias admitidas por la pila de controladores USB, el controlador de host y el punto de conexión masivo. Para obtener el número máximo de secuencias admitidas por el controlador de host, llame a USBD_QueryUsbCapability. La pila de controladores USB admite hasta 255 secuencias. Si el controlador cliente solicita más de 255 secuencias, USBD_QueryUsbCapability produce un error en la solicitud. Para obtener el número máximo de secuencias admitidas por el punto de conexión, inspeccione el descriptor complementario del punto de conexión (consulte USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR en Usbspec.h).

Para obtener información sobre cómo dar formato al URB para la solicitud de flujo abierto y el ejemplo de código, vea Cómo abrir y cerrar secuencias estáticas en un punto de conexión masivo USB.

Cuando el controlador de cliente termina de usar las secuencias, el controlador puede cerrar todas las secuencias asociadas a un punto de conexión determinado mediante el envío de una solicitud de flujo de cierre. Para enviar la solicitud, el controlador cliente debe especificar información sobre el punto de conexión en la estructura _URB_PIPE_REQUEST . El miembro Hdr de _URB_PIPE_REQUEST debe ser URB_FUNCTION_CLOSE_STATIC_STREAMS; El miembro PipeHandle debe ser el identificador del punto de conexión que contiene los flujos en uso.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8
Encabezado usb.h

Consulte también

Cómo abrir y cerrar secuencias estáticas en un punto de conexión masivo USB

URB

Estructuras USB

_URB_HEADER