Compartir a través de


Comparación de clases de configuración y clases de interfaz

Comprender la distinción entre las clases de configuración de dispositivos y las clases de interfaz de dispositivo es fundamental para el desarrollo correcto de controladores de Windows y la administración de dispositivos. Aunque estas clases pueden parecer similares, sirven fundamentalmente diferentes propósitos en el ecosistema de dispositivos Windows. Las clases de instalación rigen cómo el sistema operativo instala y configura los dispositivos. Las clases de interfaz permiten la comunicación y funcionalidad en tiempo de ejecución entre controladores, aplicaciones y dispositivos. Comprender esta distinción le ayuda a elegir el tipo de clase correcto para la instalación de dispositivos, implementar notificaciones de dispositivo adecuadas y evitar problemas comunes de desarrollo.

Un dispositivo suele pertenecer a una clase de configuración y expone varias interfaces de dispositivo en diferentes clases de interfaz al mismo tiempo. Sin embargo, los dos tipos de clases tienen fines diferentes y no son intercambiables.

Diagrama que muestra la relación entre un dispositivo, su clase de configuración y sus diversas clases de interfaz.

Comparación

En la tabla siguiente se resumen las diferencias clave y las relaciones entre las clases de instalación y las clases de interfaz:

Aspecto Clases de instalación Clases de interfaz
Propósito principal Agrupación de dispositivos con una instalación y configuración similares Agrupación de interfaces de dispositivo que proporcionan funcionalidad y comunicación similares
Uso Usado por Windows durante la instalación del dispositivo Usado por controladores y aplicaciones para la interacción del dispositivo
Definiciones de GUID Normalmente se define en Devguid.h Definido en archivos de encabezado específicos del dispositivo (por ejemplo, Ntddmou.h, Ntddpar.h)
Criterios de agrupación Dispositivos instalados y configurados de forma similar Por lo general, las interfaces de dispositivo que implementan un contrato de E/S determinado
Notificación No se usa para las notificaciones de llegada o eliminación de dispositivos Se usa para registrar las notificaciones de llegada y eliminación de la interfaz de dispositivo
Examples Sensores, firmware, Bluetooth Captura de audio, representación de audio, sensor de luz ambiente
Relación Un dispositivo pertenece a una clase de configuración Un dispositivo puede exponer cero o más interfaces de dispositivo en diferentes clases de interfaz
Vida Relevante durante el proceso de instalación Relevante durante la operación del dispositivo

Es importante distinguir entre los dos tipos de clases de dispositivo: clases de interfaz de dispositivo y clases de configuración de dispositivos. Los dos pueden confundirse fácilmente. En el código en modo de usuario, ambas clases usan el mismo conjunto de funciones de instalación de dispositivos. También usan el mismo conjunto de estructuras de datos (conjuntos de información del dispositivo).

Misma clase de instalación, diferentes clases de interfaz:

  • Dispositivos: dos dispositivos de sensor diferentes
  • Clase setup: ambos dispositivos están en la clase Sensors .
  • Clases de interfaz: un sensor expone una interfaz de dispositivo de sensor de luz ambiental y la otra expone una interfaz de dispositivo de acelerómetro.

Considere un dispositivo de mouse USB y un dispositivo de teclado USB. Ambos usan la misma clase de interfaz (dispositivo de interfaz humana). Pero pertenecen a diferentes clases de configuración, mouse y teclado, respectivamente.

Misma clase de interfaz, diferentes clases de configuración:

  • Dispositivos: un mouse USB y un teclado USB
  • Clase de interfaz: ambos dispositivos usan la misma clase de interfaz (dispositivo de interfaz humana) para comunicarse con el sistema.
  • Clases de instalación: el dispositivo del mouse pertenece a la clase de configuración mouse , mientras que el dispositivo de teclado pertenece a la clase de configuración Teclado .

Clases de configuración de dispositivos

Las clases de configuración de dispositivos son categorías predefinidas que se usan únicamente para la instalación y configuración de dispositivos en Windows. Ayudan al sistema operativo a comprender cómo administrar el dispositivo durante el proceso de instalación. Las clases de instalación proporcionan un mecanismo para agrupar dispositivos que están instalados y configurados de la misma manera. Para obtener más información sobre las clases de instalación, consulte Clases de instalación de dispositivos definidas por el sistema disponibles para los proveedores.

Las clases de configuración de dispositivos Windows se definen en el archivo del sistema Devguid.h. Este archivo define una serie de GUID para las clases de instalación. Sin embargo, las clases de configuración del dispositivo representadas en Devguid.h no deben confundirse con las clases de interfaz de dispositivo. El archivo Devguid.h solo contiene GUID para las clases de instalación.

Clases de interfaz de dispositivo

Las clases de interfaz de dispositivo proporcionan un mecanismo para agrupar interfaces de dispositivo según las características o funcionalidades compartidas. Los controladores y las aplicaciones de usuario pueden registrarse para recibir notificaciones sobre las interfaces de dispositivo en una clase de interfaz determinada. Esto significa que reciben notificaciones cuando cualquier interfaz de dispositivo que pertenezca a esa clase está habilitada (llega) o está deshabilitada (quitada). No necesitan realizar un seguimiento de dispositivos individuales. Las clases de interfaz de dispositivo agrupan interfaces de dispositivo expuestas por dispositivos. Se registra para recibir notificaciones de llegada y eliminación de interfaces de dispositivo.

Las definiciones de clases de interfaz no se proporcionan en un solo archivo. Una clase de interfaz de dispositivo siempre se define en un archivo de encabezado que pertenece exclusivamente a una clase determinada de dispositivos. Por ejemplo, Ntddmou.h contiene la definición de GUID_DEVINTERFACE_MOUSE, el GUID que representa la clase de interfaz del mouse. Ntddpar.h define el GUID de clase de interfaz para dispositivos paralelos. Ntddpcm.h define el GUID de clase de interfaz estándar para dispositivos PCMCIA. Ntddstor.h define el GUID de clase de interfaz para dispositivos de almacenamiento.

Para registrarse para las notificaciones de la interfaz de dispositivo, use los GUID que se encuentran en los archivos de encabezado específicos de la clase de interfaz de dispositivo. Estos GUID le permiten recibir notificaciones cuando llega una instancia de interfaz de dispositivo. Si un controlador se registra para recibir notificaciones mediante un GUID de clase de instalación en lugar de un GUID de clase de interfaz, no se notifica cuando llega una interfaz.

Al definir una nueva clase de interfaz, no use un único GUID para identificar una clase de instalación y una clase de interfaz.