Вопрос: Как Windows классифицирует устройства в «Диспетчере устройств»?


Как Windows определяет категоризацию устройства в «Диспетчере устройств»?

Например, Диспетчер устройств перечисляет такие категории, как «Устройства отображения», «Клавиатуры», «Звуковые, видео и игровые контроллеры» и т. Д. - как Windows «знает», чтобы поместить устройство в любую из этих категорий?

Как Windows определяет, какое устройство является, а затем записывать его под категорию?

Для справки я понимаю, что Windows использует аппаратные средства и идентификаторы поставщиков, чтобы «знать», что такое устройство, и что видимое имя устройства связано с исходным файлом INF. Но, по моему мнению, файлы INF не определяют категорию или тип устройства, поэтому почему мне интересно, как Windows делает различие.


2
2017-07-03 17:09


Источник


Как насчет указателя на рассуждения нижнего уровня? - Coldblackice


Ответы:


В основном это ответственность водителя устройства. Windows представляет собой объекты устройства, Каждый объект устройства имеет тип устройства, который хранится в элементе DeviceType его структуры DEVICE_OBJECT. Тип устройства представляет собой тип базового оборудования для драйвера. См. Исходную страницу ниже, а также соответствующую документацию MSDN о драйверах ядра и пользовательского режима, архитектуре модели драйверов Windows (WDM) и т. Д.

Источник


2
2017-07-03 17:35



Блестящий - спасибо! - Coldblackice


Ваше понимание неверно - файлы INF определяют категорию, в которой устройство будет работать в диспетчере устройств. Windows классифицирует устройства на основе записей Class и ClassGuid в файле INF, используемом для установки устройства.

Например, перейдите в Диспетчер устройств -> Клавиатуры -> HID Keyboard Device (предполагается) -> щелкните правой кнопкой мыши -> Свойства -> вкладка «Сведения» -> «Выпадающее меню» -> «Класс устройства». Вы должны увидеть {4d36e96b-e325-11ce-bfc1-08002be10318} для GUID класса устройства. Это соответствует GUID для клавиатуры в ссылке MSDN «Классы настройки системного устройства, доступные для поставщиков» http://msdn.microsoft.com/en-us/library/ff553426%28v=vs.85%29.aspx

Вы даже можете создать свои собственные категории Диспетчера устройств. «Создание нового класса настройки устройства» http://msdn.microsoft.com/en-us/library/ff540189%28VS.85%29.aspx  Но это, как правило, неодобрительно, и вы должны использовать существующие GUID класса, где это необходимо. Например, если вы решили использовать другой GUID класса для клавиатуры, я думаю, что ОС не распознает нажатые клавиши, даже если ОС распознает само устройство (то есть оно перечислено, оно отправляет данные, но данные не входят в буферы клавиатуры системы)


4
2017-07-22 20:11



Удивительная информация, спасибо! - Coldblackice
ajs410 верен. Там является член DeviceType в объекте Device, описанный Караном, но за исключением нескольких типов устройств, которые были вокруг в течение длительного времени, это своего рода исторический. - Jamie Hanrahan