Программирование драйверов Windows

Идентификаторы PnP устройств


Процесс автоматической установки PnP устройств сильно зависит от способности устанавливающего программного обеспечения локализовать нужный inf-файл и секции в нем, относящиеся к драйверу. Особое значение имеет в данном случае то, как указываются в inf-файле наименования классов и идентификаторы устройств.

Каждое устройство, спроектированное по спецификации PnP, должно иметь идентификатор, который однозначно определяет модель данного устройства. Этот идентификатор должен быть предоставлен шинному аппаратному обеспечению (а следовательно, и шинному драйверу) по поступлении запроса. Разумеется, шинный драйвер подает запрос сразу же, как только новое устройство подключено. Секция [Models] в inf-файле содержит значение hw_id, играющее роль идентификатора модели.

В примере инсталляционного inf-файла для драйвера Example.sys (глава 3) в роли такого идентификатора выступила строка "*svpBook\Example", что было приемлемо для не-PnP устройства. Значение, вводимое в поле hw_id для PnP устройств, должно придерживаться определенного формата, изменяющегося в зависимости от типа шины, к которой устройство подключается, но обычно идентификатор поступает в устанавливающий программный код в виде:

тип_шины\идентификатор_модели

например:

PGI\VEN_1011&DEV_002&SUBSYS_00000000&REV_02

Устанавливающие системные сервисы весьма просто могут проследить, согласуется ли запись в inf-файле с возвращаемым вновь подключенным устройством идентификатором. В той же записи inf-файла допускается описание списка совместимого аппаратного обеспечения (разумеется, если совместимость существует) в форме задания дополнительных идентификаторов устройств. В случае, если точное совпадение с полученным ID устройства не обнаружено в данном inf-файле, делается попытка найти совпадения по совместимым идентификаторам.



Содержание раздела