estructura _URB_CONTROL_TRANSFER_EX (usb.h)
Los controladores de cliente USB usan la estructura _URB_CONTROL_TRANSFER_EX para transferir datos hacia o desde una canalización de control, con un tiempo de espera que limita el tiempo de transferencia aceptable.
Sintaxis
struct _URB_CONTROL_TRANSFER_EX {
struct _URB_HEADER Hdr;
USBD_PIPE_HANDLE PipeHandle;
ULONG TransferFlags;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
ULONG Timeout;
ULONG Pad;
struct _URB_HCD_AREA hca;
UCHAR SetupPacket[8];
};
Miembros
Hdr
Puntero a una estructura de _URB_HEADER que especifica la información del encabezado URB. Hdr.Function debe ser URB_FUNCTION_CONTROL_TRANSFER_EX y Hdr.Length debe ser sizeof(_URB_CONTROL_TRANSFER_EX)
.
PipeHandle
Identificador de la canalización.
Si el destino es el punto de conexión de control predeterminado, PipeHandle debe ser NULL. En este caso, TransferFlags debe contener la marca USBD_DEFAULT_PIPE_TRANSFER.
Si el destino es un punto de conexión de control no predeterminado, PipeHandle especifica un identificador opaco para la canalización de control. El controlador del controlador de host devuelve este identificador cuando el controlador cliente selecciona la configuración del dispositivo con un URB de tipo URB_FUNCTION_SELECT_CONFIGURATION o cuando el controlador cliente cambia la configuración de una interfaz con un URB de tipo URB_FUNCTION_SELECT_INTERFACE.
TransferFlags
Especifica cero, uno o una combinación de las marcas siguientes:
Valor | Significado |
---|---|
|
Se establece para solicitar datos desde un dispositivo. Para transferir datos a un dispositivo, esta marca debe estar desactivada. |
|
Se establece para transferir datos a un dispositivo. Establecer esta marca equivale a borrar la marca USBD_TRANSFER_DIRECTION_IN. |
|
Se establece para dirigir al controlador de host que no devuelva un error cuando recibe un paquete del dispositivo que es más corto que el tamaño máximo del paquete para el punto de conexión. El tamaño máximo de paquete para el punto de conexión se notifica en el miembro bMaxPacketSize0 de la estructura de USB_DEVICE_DESCRIPTOR (descriptor de dispositivo) para el punto de conexión de control predeterminado. Para un punto de conexión de control no predeterminado, el tamaño máximo del paquete se establece en el miembro wMaxPacketSize de la estructura de USB_ENDPOINT_DESCRIPTOR (descriptor de punto de conexión).
Cuando el controlador de host recibe un paquete cuya longitud es menor que el valor wMaxPacketSize en un punto de conexión de control, el comportamiento es el siguiente en función del tipo de controlador de host:
|
|
Se establece para dirigir el controlador de host para realizar una transferencia de control en la canalización de control predeterminada. Esto permite al autor de la llamada enviar comandos a la canalización de control predeterminada sin especificar explícitamente el identificador de canalización. |
TransferBufferLength
Especifica la longitud, en bytes, del búfer especificado en TransferBuffer o descrito en TransferBufferMDL. El controlador del controlador de host devuelve el número de bytes enviados o leídos desde la canalización de este miembro.
TransferBuffer
Puntero a un búfer residente para la transferencia o es NULL si se proporciona un MDL en TransferBufferMDL. El contenido de este búfer depende del valor de TransferFlags. Si se especifica USBD_TRANSFER_DIRECTION_IN, este búfer contendrá datos leídos del dispositivo a cambio del controlador del controlador de host. De lo contrario, este búfer contiene datos proporcionados por el controlador para la transferencia al dispositivo.
TransferBufferMDL
Puntero a un MDL que describe un búfer residente o es NULL si se proporciona un búfer en TransferBuffer. El contenido del búfer depende del valor de TransferFlags. Si se especifica USBD_TRANSFER_DIRECTION_IN, el búfer descrito contendrá datos leídos del dispositivo a cambio del controlador del controlador de host. De lo contrario, el búfer contiene datos proporcionados por el controlador para la transferencia al dispositivo. Este MDL debe asignarse desde un grupo no paginado.
Timeout
Indica el tiempo, en milisegundos, antes de que se agote el tiempo de espera de la URB. Un valor de 0 indica que no hay tiempo de espera para este URB.
Pad
Reservado. No utilizar.
hca
Reservado. No utilizar.
SetupPacket[8]
Especifica un paquete de configuración de solicitud definido por USB. El formato de un paquete de configuración de solicitud USB se encuentra en la especificación del núcleo USB.
Comentarios
Esta estructura URB es idéntica a _URB_CONTROL_TRANSFER, salvo que el miembro Timeout establece un tiempo de espera para el URB.
Los miembros reservados de esta estructura deben tratarse como opacos y están reservados para el uso del sistema.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible en Windows Vista y sistemas operativos posteriores. |
Encabezado | usb.h (incluye Usb.h) |