Compartir a través de


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
USBD_TRANSFER_DIRECTION_IN
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.
USBD_SHORT_TRANSFER_OK
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:

  • En los controladores host de EHCI, el controlador de host continúa inmediatamente a la fase de estado de la transferencia de control. La transferencia se completa correctamente, independientemente de si se ha establecido USBD_SHORT_TRANSFER_OK.
  • En los controladores de host UHCI y OHCI, si se establece USBD_SHORT_TRANSFER_OK, el controlador de host continúa con la fase de estado. Si no se establece USBD_SHORT_TRANSFER_OK, el controlador de host abandona las fases de datos y estado de la transferencia de control y la transferencia se completa con un error.

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)

Consulte también

URB

Estructuras USB

_URB_HEADER