Classes de instalação versus classes de interface
É importante distinguir entre os dois tipos de classes de dispositivo: classes de interface do dispositivo e classes de configuração de dispositivo. Os dois podem ser facilmente confundidos porque no código do modo de usuário o mesmo conjunto de funções de instalação do dispositivo e o mesmo conjunto de estruturas de dados (conjuntos de informações do dispositivo) são usados com ambas as classes. Além disso, um dispositivo geralmente pertence a uma classe de instalação e várias classes de interface ao mesmo tempo. No entanto, os dois tipos de classes servem a diferentes finalidades, usam diferentes áreas no registro e dependem de um conjunto diferente de arquivos de cabeçalho para definir GUIDs de classe.
As classes de instalação do dispositivo fornecem um mecanismo para agrupar dispositivos instalados e configurados da mesma maneira. Por exemplo, todas as unidades CD-ROM pertencem à classe de configuração CDROM.
As classes de interface do dispositivo fornecem um mecanismo para agrupar dispositivos de acordo com características ou funcionalidades compartilhadas. Em vez de acompanhar a presença no sistema de um dispositivo individual, drivers e aplicativos de usuário podem se registrar para serem notificados sobre a chegada ou remoção de qualquer dispositivo que pertença a uma classe de interface específica.
As classes de instalação do dispositivo Windows são definidas no arquivo do sistema Devguid.h. Esse arquivo define uma série de GUIDs para classes de instalação. No entanto, as classes de instalação do dispositivo representadas em Devguid.h não devem ser confundidas com classes de interface do dispositivo. O arquivo Devguid.h contém apenas GUIDs para classes de instalação.
As definições de classes de interface não são fornecidas em um único arquivo. Uma classe de interface do dispositivo é sempre definida em um arquivo de cabeçalho que pertence exclusivamente a uma classe específica de dispositivos. Por exemplo, Ntddmou.h contém a definição de GUID_DEVINTERFACE_MOUSE, o GUID que representa a classe de interface do mouse; Ntddpar.h define o GUID da classe de interface para dispositivos paralelos; Ntddpcm.h define o GUID da classe de interface padrão para dispositivos PCMCIA; Ntddstor.h define o GUID da classe de interface para dispositivos de armazenamento e assim por diante.
Os GUIDs em arquivos de cabeçalho específicos da classe de interface do dispositivo devem ser usados para registrar para notificação de chegada de uma instância de uma interface do dispositivo. Se um driver se registrar para notificação usando um GUID de classe de instalação em vez de um GUID de classe de interface, ele não será notificado quando uma interface chegar.
Ao definir uma nova classe de instalação ou classe de interface, não use um único GUID para identificar uma classe de instalação e uma classe de interface.
Para obter mais informações sobre GUIDs, consulte Usando GUIDs em drivers.