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

2

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

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

Как Windows решает, какое устройство и какое устройство, а затем помещает его в категорию?

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

Coldblackice
источник

Ответы:

2

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

Источник

Каран
источник
4

Ваше понимание неверно - 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 класса для клавиатуры, (я думаю) операционная система не будет распознавать нажатые клавиши, даже если операционная система распознает само устройство (т. Е. Перечисляет, передает данные, но данные не попадают в системные буферы клавиатуры)

ajs410
источник
ajs410 правильно. Там является членом DeviceType в объекте устройства , как описано Каран, но в течение нескольких типов устройств , которые были вокруг в течение длительного времени , за исключением того , это своего рода исторический.
Джейми Ханрахан