estructura _URB_CONTROL_VENDOR_OR_CLASS_REQUEST (usb.h)
Los controladores de cliente USB usan la estructura _URB_CONTROL_VENDOR_OR_CLASS_REQUEST para emitir un proveedor o un comando específico de clase a un dispositivo, interfaz, punto de conexión u otro destino definido por el dispositivo.
Sintaxis
struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST {
struct _URB_HEADER Hdr;
PVOID Reserved;
ULONG TransferFlags;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
struct _URB *UrbLink;
struct _URB_HCD_AREA hca;
UCHAR RequestTypeReservedBits;
UCHAR Request;
USHORT Value;
USHORT Index;
USHORT Reserved1;
};
Miembros
Hdr
Puntero a una estructura de _URB_HEADER que especifica la información del encabezado URB. Hdr.Function debe ser una de URB_FUNCTION_CLASS_XXX o URB_FUNCTION_VENDOR_XXX GET_STATUS, y Hdr.Length debe ser sizeof(_URB_CONTROL_VENDOR_OR_CLASS_REQUEST)
.
Reserved
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. La marca debe establecerse si la canalización es una canalización de transferencia de interrupción. |
|
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:
Esta marca no se debe establecer a menos que también se establezca USBD_TRANSFER_DIRECTION_IN. |
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.
UrbLink
Reservado. No utilizar.
hca
Reservado. No utilizar.
RequestTypeReservedBits
Reservado. No utilizar.
Request
Especifica el código de solicitud USB o definido por el proveedor para el dispositivo, la interfaz, el punto de conexión u otro destino definido por el dispositivo.
Value
Especifica un valor, específico de request, que se convierte en parte del paquete de instalación definido por USB para el destino. Este valor lo define el creador del código usado en Request.
Index
Especifica el índice definido por el dispositivo, devuelto por una solicitud de configuración correcta, si la solicitud es para un punto de conexión o una interfaz. De lo contrario, Index debe ser cero.
Reserved1
Reservado. No utilizar.
Comentarios
Los controladores pueden usar el formato de rutina del servicio UsbBuildVendorRequest en este URB.
Los miembros reservados de esta estructura deben tratarse como opacos y están reservados para el uso del sistema.
Requisitos
Requisito | Valor |
---|---|
Header | usb.h (incluye Usb.h) |