Controladores de cliente HID
Si un minidriver HID suministrado por el sistema no admite el puerto o bus de un dispositivo, se requiere un minidriver suministrado por el proveedor.
En la ilustración siguiente se muestra una pila de controladores para un dispositivo HIDClass genérico (que puede usar componentes opcionales y proporcionados por el proveedor necesarios).
Windows compila la pila de controladores de la siguiente manera:
- La pila de transporte crea un objeto de dispositivo físico (PDO) para cada dispositivo HID conectado y carga el controlador de transporte HID adecuado que, a su vez, carga el controlador de clase HID.
- El controlador de clase HID crea un PDO para el TLC . Para dispositivos complejos con varios TLC, el controlador de clase HID crea un PDO para cada TLC y garantiza que el identificador de hardware asociado al TLC incluya un identificador para representar cada objeto de dispositivo.
- Un controlador de filtro o función proporcionado por el proveedor crea un FDO o un do de filtro para una colección HID.
- Como alternativa, una aplicación proporcionada por el proveedor puede abrir el dispositivo mediante las API SetupDI* para identificar el dispositivo y, a continuación, las rutinas admitidas por HID para comunicarse con el dispositivo. Se dice que estos dispositivos se abren en modo RAW.
Si las operaciones de minidriver proporcionadas por el sistema no admiten un dispositivo, se requiere un minidriver HID suministrado por el proveedor. Puede implementar este minidriver de dos maneras:
- Controlador cliente HID
- La aplicación accede directamente a HID
Si un proveedor proporciona un controlador (distinto de un minidriver), ese controlador:
- Debe cumplir los requisitos mínimos en el controlador de Windows. Lo ideal es que esto se base en el marco del controlador en modo de usuario (UMDF) o en el marco del controlador en modo kernel (KMDF). Una solución menos ideal es crear un controlador de función WDM, como se describe en Modelo de controlador de Windows.
- Normalmente admite una interfaz de dispositivo definida por el proveedor; consulte Clases de interfaz de dispositivo. Los controladores de nivel superior o las aplicaciones en modo de usuario usan la interfaz personalizada para acceder a los dispositivos que opera el controlador de proveedor. La interfaz personalizada podría agregar funcionalidad o, quizás, simplificar la interfaz al controlador de clase HID.
Si el controlador no es un controlador de función o un controlador de filtro, puede usar Plug and Play notificación para buscar colecciones HID. Después de buscar una colección, el controlador abre la colección y la opera de la misma manera que una función o un controlador de filtro.
Nota importante:
- Si un controlador de función proporcionado por el proveedor crea un FDO o un filtro DO para una colección HID, no debe usar el campo FsContext de FILE_OBJECT para almacenar datos específicos del objeto de archivo. El campo FsContext está reservado para el controlador de clase HID. Si otro controlador de la pila necesita almacenar datos de contexto específicos del objeto de archivo, debe usar el campo FsContext2 en su lugar.
- Si hay varios dispositivos conectados al PDO, no hay ningún mecanismo integrado para determinar qué dispositivo puede usar el campo FsContext2.