Секции [ServiceInstall]
Секции типа [ServiceInstall] предназначены для заполнения или модификации подраздела Системного Реестра, описывающего загрузку драйвера в сервисном подразделе для данного драйвера, а именно — в подразделе HKLM\System\CurrentControlSet\Services\<service-name>. Здесь <service-name> — это значение поля service-name, указанное в директиве AddService в секции [DDInstall.Xxx.Services]. Конкретное имя секции типа [ServiceInstall] выбирается разработчиком inf-файла. Декорирование имен секций данного типа (с целью отразить ее предназначение для конкретной версии системы) уже не имеет смысла и не воспринимается, поскольку эта принадлежность должна была быть введена раньше — на уровне секций [DDInstall.Xxx.Services]. Описание директив для секций типа [ServiceInstall] приводится в таблице 12.10, причем директивы ServiceType, StartType, ErrorControl и ServiceBinary являются обязательными. Эти директивы однозначно определяют информацию (значения одноименных параметров), которая появится в Системном Реестре в сервисном подразделе для данного драйвера — пример, касающийся драйвера Example.sys, рассмотрен в Приложении В.
Таблица 12.10. Записи секции [ServiceInstall]
Запись | Значение поля | |
DisplayName | Развернутое наименование драйвера, выводится на экран Мастером Установки Оборудования | |
Description | Краткое описание назначения драйвера или сервиса, выводится Мастером Установки Оборудования | |
ServiceType | Для драйвера режима ядра 0x01 (см. также Приложение В) | |
StartType | Определяет момент загрузки драйвера 0 — SERVICE_BOOT_START — во время загрузки системы (WDM драйверы, опирающиеся на системные драйверы не должны использовать такой тип запуска) 1 — SERVICE_SYSTEM_START — во время инициализации системы (WDM драйверы, опирающиеся на системные драйверы должны использовать такой тип запуска с осторожностью) 2 — SERVICE_AUTO_START — автостарт после запуска системы средствами SCM Менеджера (WDM драйверы и драйверы РпР устройств не должны указывать этот код запуска) 3 — SERVICE_DEMAND_START — старт по требованию: либо по запросу РnР Менеджера при обнаружении РnР устройства, либо по явному запросу приложения при помощи вызовов SCM Менеджера 4 — SERVICE_DISABLED — не может стартовать |
|
ErrorControl | Распоряжение относительно возникающих ошибок: 0 — игнорировать все ошибки при загрузке драйвера 1 — показывать сообщения об ошибках пользователю 2 — выполнить рестарт с набором параметров, обеспечившим последнюю удачную загрузку (LastKnownGood), игнорировать дальнейшие ошибки 3 — выполнить рестарт с набором параметров, обеспечившим последнюю удачную загрузку (LastKnownGood), контроль ошибок если таковые возникнут со стороны пользователя |
|
ServiceBinary | Путь к файлу драйвера (может включать коды dirid, таблица 12.6) | |
AddReg | Вводит (через запятую) ссылки на секции типа [AddReg], в которых описываются действия над Реестром, которые следует выполнить дополнительно к описанным в данной секции | |
LoadOrderGroup | Идентифицирует группу, в которой должен загружаться драйвер (возможные группы можно увидеть в разделе Системного Реестра HKLM\System\CurrentControlSet\Control\GroupOrderList) | |
Dependencies | Указывает сервисы (драйверы) или группы загрузки, которые должны быть загружены к моменту загрузки драйвера. Имена групп выделяются при вводе предшествующим им знаком '+'. |
Директивы LoadOrderGroup и Dependencies широко используются при установке драйверов SCSI устройств и фильтр-драйверов.
Директива DelReg, которая также может быть в составе [ServiceInstall], вводит ссылки на секции, описывающие удаление из Системного Реестра информации для уже установленных программных продуктов. Используется эта директива редко.
Остальные директивы, возможные для ввода в секциях типа [ServiceInstall], а именно, StartName и BitReg практически не используются.