Классы установки и классы интерфейса
Важно различать два типа классов устройств: классы интерфейса устройства и классы настройки устройства. Их можно легко спутать, так как в коде пользовательского режима один и тот же набор функций установки устройства и один и тот же набор структур данных (наборы сведений об устройстве) используются с обоими классами. Кроме того, устройство часто принадлежит как к классу установки, так и к нескольким классам интерфейса одновременно. Тем не менее, эти два типа классов служат разным целям, используют различные области реестра и используют разные наборы файлов заголовков для определения GUID класса.
Классы настройки устройств предоставляют механизм для группировки устройств, установленных и настроенных таким же образом. Например, все дисководы компакт-дисков принадлежат к классу установки CDROM.
Классы интерфейсов устройств предоставляют механизм для группировки устройств в соответствии с общими характеристиками или функциональными возможностями. Вместо отслеживания присутствия в системе отдельного устройства драйверы и пользовательские приложения могут регистрироваться, чтобы получать уведомления о прибытии или удалении любого устройства, которое принадлежит к определенному классу интерфейса.
Классы установки устройств Windows определяются в системном файле Devguid.h. Этот файл определяет ряд идентификаторов GUID для классов установки. Однако классы настройки устройств, представленные в Devguid.h , не следует путать с классами интерфейса устройства. Файл Devguid.h содержит только идентификаторы GUID для классов установки.
Определения классов интерфейса не предоставляются в одном файле. Класс интерфейса устройства всегда определяется в файле заголовка, который принадлежит исключительно определенному классу устройств. Например, ntddmou.h содержит определение GUID_DEVINTERFACE_MOUSE, GUID, представляющий класс интерфейса мыши; Ntddpar.h определяет GUID класса интерфейса для параллельных устройств; Ntddpcm.h определяет guid класса стандартного интерфейса для устройств PCMCIA; Ntddstor.h определяет GUID класса интерфейса для устройств хранения и т. д.
Идентификаторы GUID в файлах заголовков, относящихся к классу интерфейса устройства, следует использовать для регистрации уведомления о поступлении экземпляра интерфейса устройства. Если драйвер регистрируется для получения уведомления с помощью GUID класса установки вместо GUID класса интерфейса, он не будет получать уведомления при поступлении интерфейса.
При определении нового класса установки или класса интерфейса не используйте один GUID для идентификации класса установки и класса интерфейса.
Дополнительные сведения о идентификаторах GUID см. в статье Использование идентификаторов GUID в драйверах.