Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
UCX amplía la funcionalidad del objeto WDF para definir sus propios objetos UCX específicos de USB. UCX usa estos objetos para poner en cola las solicitudes a cualquier controlador de host subyacente.
Resumen
- El controlador de host utiliza objetos UCX para gestionar las operaciones relacionadas con el controlador, su centro raíz y todos los puntos de conexión.
- Los objetos UCX son creados por el controlador de host y UCX gestiona la duración de cada objeto.
API importantes
UCX amplía la funcionalidad del objeto WDF para definir sus propios objetos UCX específicos de USB. UCX usa estos objetos para encolar solicitudes a cualquier controlador de host subyacente.
Para obtener más información sobre los objetos WDF, vea Introducción a los objetos framework.
UCXCONTROLLER: objeto de controlador de host
Representa el controlador del host creado por el controlador de host. El controlador debe crear solo un objeto de controlador de host por instancia de controlador de host. Normalmente se crea en el callback EvtDriverDeviceAdd llamando al método UcxControllerCreate.
Cuando el controlador anfitrión crea el objeto, este registra su implementación de funciones de devolución de llamada que son invocadas por UCX. Además, el controlador debe identificar el tipo de bus sobre el que está conectado el controlador host, como ACPI o PCI. El controlador también proporciona información del dispositivo del controlador host mediante la estructura UCX_CONTROLLER_CONFIG que se pasa a la llamada UcxControllerCreate .
Para gestionar las solicitudes de E/S, el controlador del controlador de host debe registrar una interfaz de dispositivo GUID_DEVINTERFACE_USB_HOST_CONTROLLER. El controlador no es necesario para implementar las ICTL definidas en esta interfaz. En su lugar, el cliente UCX pasa las solicitudes IOCTL recibidas en esta interfaz a UCX mediante una llamada a UcxIoDeviceControl.
Estas son las funciones de retorno asociadas al objeto de controlador principal, que UCX invoca. El controlador de host debe implementar estas funciones.
*
EVT_UCX_CONTROLLER_USBDEVICE_ADD Se llama cuando el controlador del concentrador ha determinado, a través de la interacción con el concentrador raíz o los concentradores externos, que un nuevo dispositivo se encuentra en el bus.
*
EVT_UCX_CONTROLLER_QUERY_USB_CAPABILITY es llamado por UCX para recopilar información sobre diversas funciones compatibles de los controladores de host USB.
*
EVT_UCX_CONTROLLER_RESET Llamado por UCX para restablecer el hardware del controlador, posiblemente en respuesta a un error detectado.
*
EVT_UCX_CONTROLLER_GET_CURRENT_FRAMENUMBER
Se usa para recuperar el número de fotograma actual del controlador host, que el controlador del concentrador utiliza para programar transferencias isocrónicas.
UCXROOTHUB: objeto de concentrador raíz
Obtiene y controla el estado de los puertos raíz del controlador de host. Creado por el controlador del host, normalmente dentro de la devolución de llamada EvtDriverDeviceAdd, llamando al método UcxRootHubCreate después de crear el objeto del controlador de host. Solo debe haber un objeto de concentrador raíz por instancia de controlador de host. En la llamada UcxRootHubCreate, el controlador registra sus implementaciones de devolución de llamada.
EVT_UCX_ROOTHUB_GET_INFO Devuelve el número de puertos USB 2.0 y USB 3.0 del concentrador raíz.
EVT_UCX_ROOTHUB_GET_20PORT_INFO
Devuelve información sobre los puertos USB 2.0 o USB 3.0 (*EVT_UCX_ROOTHUB_GET_30PORT_INFO) del concentrador raíz.
Después de crear e inicializar el objeto de concentrador raíz, el controlador del concentrador interactúa con los puertos del concentrador raíz mediante el envío de transferencias de interrupción y control. UCX ayuda con estas transferencias invocando estas funciones de devolución de llamada implementadas por el controlador del host.
EVT_UCX_ROOTHUB_CONTROL_URB
Controla las solicitudes de control de funciones por el concentrador USB.
EVT_UCX_ROOTHUB_INTERRUPT_TX
Controla la solicitud de información sobre los puertos modificados.
Para obtener más información, consulte Funciones de devolución de llamada del concentrador raíz de un controlador de host.
UCXUSBDEVICE: objeto de dispositivo USB
Representa un dispositivo USB físico conectado al bus. Creado por el controlador del host normalmente en la devolución de llamada EVT_UCX_CONTROLLER_USBDEVICE_ADD llamando al método UcxUsbDeviceCreate.
Cuando se crea el objeto, el controlador principal registra su implementación de las funciones de devolución de llamada con la llamada UcxUsbDeviceCreate.
Estas funciones de devolución de llamada están diseñadas para mantener informado al gestor y al controlador sobre el estado actual de los dispositivos USB.
EVT_UCX_USBDEVICE_ENABLE prepara el controlador para realizar transferencias al end-point estándar del dispositivo.
EVT_UCX_USBDEVICE_DISABLE
libera los recursos del controlador asociados con el dispositivo y su punto de conexión predeterminado.
EVT_UCX_USBDEVICE_ADDRESS
Programa una dirección en el controlador y envía una transferencia SET_ADDRESS al dispositivo, para llevarlo al estado direccionado.
EVT_UCX_USBDEVICE_ENDPOINTS_CONFIGURE
Configura puntos de conexión no predeterminados en el controlador y/o libera otros puntos de conexión no predeterminados.
EVT_UCX_USBDEVICE_RESET Notificación del controlador de que se ha restablecido un dispositivo, en cuyo caso el controlador realiza cualquier acción necesaria para sincronizar el controlador con el dispositivo USB.
EVT_UCX_USBDEVICE_UPDATE
Notifica al controlador sobre varios bits de información relacionados con el dispositivo.
EVT_UCX_USBDEVICE_HUB_INFO
Una notificación sobre las propiedades del hub, si el identificador UCXUSBDEVICE es para un dispositivo hub.
EVT_UCX_USBDEVICE_ENDPOINT_ADD Notifica al controlador que cree un punto de conexión para el dispositivo.
EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD para el punto de conexión predeterminado.
Cuando una interfaz en un dispositivo USB 3.0 suspendido ha señalado una señal de activación, se espera que el controlador llame a UcxUsbDeviceRemoteWakeNotification para notificar a UCX.
Una vez creado el objeto, ucx administra la duración del objeto y el controlador no debe eliminar el objeto.
UCXENDPOINT: objeto Endpoint
Representa un punto de conexión en un objeto de dispositivo USB. El controlador de host crea objetos de punto de conexión durante una devolución de llamada EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD o EVT_UCX_USBDEVICE_ENDPOINT_ADD. Cuando se crea un objeto de punto de conexión, el controlador registra sus funciones de devolución de llamada.
El controlador también crea un objeto de cola de framework para cada punto de conexión y pasa el WDFQUEUE de esa cola a UCX mediante una llamada a UcxEndpointSetWdfIoQueue. Una vez creado el punto de conexión, la duración del objeto y sus colas asociadas se administran mediante UCX y el controlador no debe eliminar estos objetos.
El objeto de extremo implementa diversas funciones callback que permiten al controlador asistir a UCX en operaciones relacionadas con el extremo.
EVT_UCX_ENDPOINT_ABORT Anule la cola asociada al punto de conexión.
EVT_UCX_ENDPOINT_OK_TO_CANCEL_TRANSFERS Notifique al controlador que puede completar las transferencias canceladas en el punto de conexión.
EVT_UCX_ENDPOINT_PURGE
Complete las solicitudes de E/S pendientes en el endpoint.
EVT_UCX_ENDPOINT_START
Inicie la cola asociada al punto de conexión.
EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD
para crear flujos estáticos.
EVT_UCX_ENDPOINT_RESET
Notifique al controlador para restablecer la programación del controlador del extremo.
Cuando el controlador de host recibe un error de respuesta sin ping USB 3.0 en un punto de conexión, el controlador debe llamar a UcxEndpointNoPingResponseError. Esa llamada da como resultado el objeto de dispositivo USB que recibe EVT_UCX_USBDEVICE_UPDATE. Para obtener más información, consulte Configuración de puntos de conexión USB en un controlador de host.
UCXSTREAMS: Objeto Stream
Representa una serie de canalizaciones para el dispositivo a través de un único punto de conexión. El controlador del host crea objetos de secuencia en la devolución de llamada EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD llamando a UcxStaticStreamsCreate.
Durante la llamada UcxStaticStreamsCreate, el controlador del host registra sus funciones de devolución de llamada. Para un objeto de punto de conexión específico, el controlador puede determinar si ha creado un objeto streams y devolver el identificador UCXSTREAMS llamando a UcxEndpointGetStaticStreamsReferenced.
Una vez creado el objeto, el controlador crea un objeto de cola del marco para cada flujo y envía el identificador WDFQUEUE a UCX llamando a UcxStaticStreamsSetStreamInfo.
El objeto de flujo proporciona varias funciones de devolución de llamada para que el controlador del host ayude a UCX a administrar los flujos estáticos.
EVT_UCX_ENDPOINT_STATIC_STREAMS_DISABLE
Libera los recursos del controlador para todos los flujos de un endpoint.
EVT_UCX_ENDPOINT_STATIC_STREAMS_ENABLE Habilite el hardware del controlador de todos los flujos para este punto de conexión.
UcX administra la duración del objeto y las colas asociadas y el controlador no debe eliminar los objetos.