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, el TransferFlags de 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 de USBD_TRANSFER_DIRECTION_IN. |
|
Se establece para dirigir el controlador de host a no devolver 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 bMaxPacketSize0 miembro 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 de paquete se establece en el wMaxPacketSize miembro 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 wMaxPacketSize valor 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 se NULL si se proporciona una 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 una MDL que describe un búfer residente o 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 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 del URB. Un valor de 0 indica que no hay tiempo de espera para este URB.
Pad
Reservado. No use.
hca
Reservado. No use.
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.
Observaciones
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 | Valor |
---|---|
cliente mínimo admitido | Disponible en Windows Vista y sistemas operativos posteriores. |
encabezado de | usb.h (incluya Usb.h) |