Información general sobre el desarrollo de controladores de Windows para controladores de host USB
En este artículo se describe la compatibilidad con el sistema operativo Windows para desarrollar un controlador de controlador de host de bus serie universal (USB) que se comunica con la extensión del controlador de host USB (UCX) proporcionada por Microsoft.
Si está desarrollando un controlador de host xHCI que no es compatible con la especificación o desarrollando un hardware no xHCI personalizado (como un controlador de host virtual), puede escribir un controlador de controlador de host que se comunique con UCX. Por ejemplo, considere una base inalámbrica que admita dispositivos USB. El equipo se comunica con dispositivos USB a través de la base inalámbrica mediante USB a través de TCP como transporte.
Extensión del controlador de host USB (UCX)
La extensión del controlador de host USB es un controlador proporcionado por el sistema (Ucx01000.sys). Este controlador se implementa como una extensión de clase de marco mediante las interfaces de programación de Windows Driver Framework . El controlador del controlador de host actúa como controlador de cliente para esa extensión de clase. Aunque un controlador de controlador de host controla las operaciones de hardware y los eventos, la administración de energía y los eventos PnP, UCX actúa como una interfaz abstracta que pone en cola las solicitudes al controlador del controlador de host y realiza otras tareas.
UCX es uno de los controladores del lado host USB en Windows. Se carga como FDO en la pila de dispositivos del controlador de host.
Controlador de controlador de host USB
UCX es extensible y está diseñado para admitir varios controladores de controlador de host. Windows proporciona un controlador xHCI (Usbxhci.sys) destinado a controladores de host xHCI USB.
El controlador del controlador de host es un cliente de UCX, escrito como controlador del marco de controladores en modo kernel (KMDF).
Archivos binarios proporcionados por Microsoft
Para escribir un controlador de controlador de host, necesita UCX (Ucx01000.sys) y la biblioteca de código auxiliar (Ucx01000.lib). La biblioteca de código auxiliar está en el Kit de controladores de Windows (WDK). La biblioteca realiza dos funciones principales.
- Traduzca las llamadas realizadas por el controlador del controlador de host y páselas hasta UCX.
- Proporciona compatibilidad con el control de versiones. Un controlador de controlador de host funcionará con UCX, solo si UCX tiene el mismo número de versión principal que el controlador del controlador de host y el mismo número de versión secundaria que el controlador del controlador de host.
Herramientas de desarrollo
El WDK contiene recursos necesarios para el desarrollo de controladores, como encabezados, bibliotecas, herramientas y ejemplos.
Descargar kits y herramientas para Windows
Introducción
Lea la especificación oficial que describe el comportamiento esperado de distintos componentes (dispositivo, controlador de host y concentrador) de la arquitectura.
xHCI para bus serie universal: especificación
Documentos oficiales de bus serie universal
Descripción de la arquitectura de UCX
Familiarícese con la pila de controladores USB proporcionada por Microsoft:
Controladores del lado host USB en Windows
Arquitectura: extensión del controlador de host USB (UCX)
Familiarícese con objetos y identificadores UCX
UCX amplía la funcionalidad del objeto WDF para definir sus propios objetos UCX específicos de USB. Para obtener más información sobre los objetos WDF, vea Introduction to Framework Objects.
Para las solicitudes de puesta en cola a cualquier controlador de controlador de host subyacente, UCX usa estos objetos. Para obtener más información, consulte Objetos y identificadores UCX usados por un controlador de controlador de host.
UCX (objeto) | Descripción |
---|---|
Objeto controlador de host (UCXCONTROLLER) | Representa el controlador de host creado por el controlador del controlador de host. El controlador solo debe crear un objeto de controlador de host por instancia de controlador de host. Normalmente se crea dentro de la devolución de llamada EVT_WDF_DRIVER_DEVICE_ADD llamando al método UcxControllerCreate . |
Objeto de concentrador raíz (UCXROOTHUB) | Obtiene y controla el estado de los puertos raíz del controlador de host. Creado por el controlador de host normalmente dentro de la devolución de llamada EVT_WDF_DRIVER_DEVICE_ADD llamando al método UcxRootHubCreate . |
Objeto de dispositivo USB (UCXUSBDEVICE) | Representa un dispositivo USB físico conectado al bus. Creado por el controlador de host normalmente dentro de la devolución de llamada EVT_UCX_CONTROLLER_USBDEVICE_ADD llamando al método **UcxUsbDeviceCreate . |
Objeto Endpoint (UCXENDPOINT) | Representa un punto de conexión en un objeto de dispositivo USB. Creado por el controlador de host normalmente dentro del EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD o EVT_UCX_USBDEVICE_ENDPOINT_ADD devolución de llamada llamando al método **UcxEndpointCreate . |
Objeto Stream (UCXSTREAMS) | Representa una serie de canalizaciones para el dispositivo en un único punto de conexión masivo. Creado por el controlador del controlador de host normalmente dentro de la devolución de llamada EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD llamando al método UcxStaticStreamsCreate . |
Secciones de la documentación
Funciones de devolución de llamada del centro raíz de un controlador de controlador de host
UCX controla la mayoría de las operaciones relacionadas con el centro raíz. Esto permite que el controlador del concentrador USB interactúe con el concentrador raíz de la misma manera que interactúa con un concentrador normal. El controlador del controlador de host puede registrar sus funciones de devolución de llamada.
Controlar las solicitudes de E/S en un controlador de controlador de host USB
UCX evalúa los bloques de solicitud USB entrantes (URB) y, a continuación, los reenvía a la cola de puntos de conexión correctos.
Configuración de puntos de conexión USB en un controlador de controlador de host
El controlador del controlador de host desempeña un papel en la administración de UCX de las colas asociadas a sus puntos de conexión y en la programación de puntos de conexión en hardware controlador.
Referencia de la extensión del controlador de host USB (UCX)
Proporciona especificaciones para solicitudes de E/S, rutinas de soporte técnico, estructuras e interfaces usadas por el controlador de cliente. Esas rutinas y estructuras de datos relacionadas se definen en los encabezados WDK.
UCX se conoce como la extensión de clase de marco.
El controlador de controlador de host se conoce como controlador cliente.