Clases de instalación frente a clases de interfaz
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 porque en el código en modo de usuario se usa el mismo conjunto de funciones de instalación de dispositivos y el mismo conjunto de estructuras de datos (conjuntos de información del dispositivo) con ambas clases. Además, un dispositivo suele pertenecer a una clase de configuración y a varias clases de interfaz al mismo tiempo. Sin embargo, los dos tipos de clases sirven para distintos propósitos, hacen uso de áreas diferentes en el registro y se basan en un conjunto diferente de archivos de encabezado para definir GUID de clase.
Las clases de configuración de dispositivos proporcionan un mecanismo para agrupar dispositivos que están instalados y configurados de la misma manera. Por ejemplo, todas las unidades de CD-ROM pertenecen a la clase de instalación de CDROM.
Las clases de interfaz de dispositivo proporcionan un mecanismo para agrupar dispositivos según las características o funcionalidades compartidas. En lugar de realizar un seguimiento de la presencia en el sistema de un dispositivo individual, los controladores y las aplicaciones de usuario pueden registrarse para recibir una notificación de la llegada o eliminación de cualquier dispositivo que pertenezca a una clase de interfaz determinada.
Las clases de instalació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.
Las definiciones de clases de interfaz no se proporcionan en un único 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 los dispositivos de almacenamiento, etc.
Los GUID de los archivos de encabezado específicos de la clase de interfaz de dispositivo deben usarse para registrarse para la notificación de la llegada de una instancia de una 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 notificará cuando llegue una interfaz.
Al definir una nueva clase de instalación o clase de interfaz, no use un único GUID para identificar una clase de instalación y una clase de interfaz.
Para obtener más información sobre los GUID, consulte Uso de GUID en controladores.