Bloques de solicitud USB (DIRECCIONES URL)
En este artículo se describe un bloque de solicitudes USB (URB) y se proporciona información sobre cómo un controlador de cliente USB puede usar rutinas del modelo de controlador de Windows (WDM) para asignar, compilar y enviar direcciones URL a la pila de controladores USB.
Un controlador cliente de Bus serie universal (USB) no puede comunicarse directamente con su dispositivo. En su lugar, el controlador cliente crea solicitudes y las envía a la pila de controladores USB para su procesamiento. Dentro de cada solicitud, el controlador cliente proporciona una estructura de datos de longitud variable denominada bloque de solicitud USB (URB). La estructura URB describe los detalles de la solicitud y también contiene información sobre el estado de la solicitud completada. El controlador cliente realiza todas las operaciones específicas del dispositivo, incluidas las transferencias de datos, a través de direcciones URL. El controlador cliente debe inicializar el URB con información sobre la solicitud antes de enviarlo a la pila del controlador USB. Para determinados tipos de solicitudes, Microsoft proporciona rutinas auxiliares y macros que asignan una estructura URB y rellenan los miembros necesarios de la estructura URB con los detalles proporcionados por el controlador de cliente.
Cada URB comienza con un encabezado estándar de tamaño fijo (_URB_HEADER) cuyo propósito es identificar el tipo de operación solicitado. El miembro Length de _URB_HEADER especifica el tamaño, en bytes, del URB. El miembro Function , que debe ser una de una serie de constantes de URB_FUNCTION_XXX definidas por el sistema, determina el tipo de operación que se solicita. En el caso de las transferencias de datos, por ejemplo, este miembro indica el tipo de transferencia. Los códigos de función URB_FUNCTION_CONTROL_TRANSFER, URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER y URB_FUNCTION_ISOCH_TRANSFER indican las transferencias de control, de gran tamaño o interrupción, y de las transferencias isócrónicas, respectivamente. La pila del controlador USB usa el miembro Status para devolver un código de estado específico de USB.
Para enviar un URB, el controlador cliente usa la solicitud IOCTL_INTERNAL_USB_SUBMIT_URB , que se entrega al dispositivo mediante un paquete de solicitud de E/S (IRP) de tipo IRP_MJ_INTERNAL_DEVICE_CONTROL.
Después de que la pila del controlador USB haya terminado de procesar el URB, la pila de controladores usa el miembro Status de la estructura URB para devolver un código de estado específico de USB.
Nota:
Los desarrolladores de controladores KMDF y UMDF deben usar las interfaces de marco correspondientes para comunicarse con un dispositivo USB. Para obtener más información, vea Trabajar con dispositivos USB para controladores KMDF y Trabajar con interfaces USB en UMDF. En estos temas se describen las interfaces de controlador WDM subyacentes que se usan para la comunicación del dispositivo USB.
En esta sección
Tema | Descripción |
---|---|
Asignación y creación de direcciones URL | En este tema se describe cómo un controlador de cliente USB puede usar rutinas de controladores del modelo de controladores de Windows (WDM) para asignar y dar formato a un URB antes de enviar la solicitud a la pila de controladores USB proporcionada por Microsoft. |
Cómo enviar un URB | En este tema se describen los pasos necesarios para enviar un URB inicializado a la pila de controladores USB para procesar una solicitud determinada. |
Procedimientos recomendados: Uso de direcciones URL | En este tema se describen los procedimientos recomendados para un controlador cliente para asignar, compilar y enviar un URB a la pila de controladores USB incluida con Windows 8. |