Установка драйвера в системе
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Для установки драйвера необходимо вызвать функции драйвера в определенный момент загрузки системы. Это необходимо для того, чтобы драйвер занял нужное место в стеке драйверов. Операционная система Windows осуществляет загрузку драйверов в порядке, прописанном в системном реестре.

Каждое устройство имеет свой раздел в реестре. Все эти разделы находятся в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControleSet\Control\Class. Клавиатуре соответствует раздел {4 D 36 E 96 B - E 325-11 CE - BFC 1-08002 BE 10318}. У каждого устройства в его разделе есть ключи UpperFilters и LowerFilters. Это ключи типа MultiString. Они содержат имена верхних и нижних драйверов-фильтров данного устройства. Драйверы-фильтры загружаются в систему в том порядке, в каком они записаны в этих ключах.

Для регистрации разрабатывавемого драйвера как фильтра необходимо поместить его имя в последним в ключе UpperFilters.

Для регистрации нового драйвера необходимо создать раздел с именем этого драйвера в системном реестре по адресу HKEY _ LOCAL _ MACHINE \ SYSTEM \ CurrentControlSet \ Services. Этот раздел должен содержать следующие ключи:

Type типа двойное слово

Определяет тип подключаемого модуля.

Интересует только значение SERVICE_KERNEL_DRIVER (1).

Start типа двойное слово

Определяет метод загрузки драйвера. Может принимать одно из следующих значений:

SERVICE _ BOOT _ START (0) – во время начальной загрузки ОС. Данное значение применяется, когда драйвер используется загрузчиком системы;

SERVICE _ SYSTEM _ START (1) – после начальной загрузки ОС. Применяется для драйверов, которые самостоятельно осуществляют поиск оборудования, но не используются загрузчиком системы (нумераторы).

SERVICE _ AUTO _ START (2) – автоматическая загрузка с помощью диспетчера управления сервисами (Service Control Manager). Применяется для драйверов, не поддерживающих Plug and Play.

SERVICE _ DEMAND _ START (3) – загрузка «по требованию» либо диспетчера Plug and Play при обнаружении устройства, либо диспетчера управления сервисами при поступлении от пользователя команды на загрузку.

SERVICE _ DISABLED (4) – драйвер не загружается.

ErrorControl типа двойное слово

Определяет уровень контроля ошибок. Может принимать значения:

SERVICE _ ERROR _ IGNORE (0). В случае сбоя при загрузке драйвера игнорировать его и продолжить работу.

SERVICE _ ERROR _ NORMAL (1). В случае сбоя при загрузке драйвера продолжить работу, но выдать при этом соответствующее предупреждение.

SERVICE _ ERROR _ SEVERE (2). В случае сбоя при загрузке драйвера переключиться на последнюю конфигурацию, при которой работа системы происходила без ошибок.

SERVICE _ ERROR _ CRITICAL (3). Аналогично (2), но в случае повторного сбоя выдать «синий экран».

DisplayName типа строка ASCII

Экранное имя, отображаемое служебными приложениями на экране. Этот параметр не обязателен. При его отсутствии экранным именем считается имя подраздела.

ImagePath типа строка Unicode

Полный путь к файлу с драйвером на диске. Обычно это поле устанавливается в значение %windir%\‌‌system32\‌‌Drivers\‌‍‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌D‌‌‌riverName.sys, где %windir% — папка, в которую установлена Windows, а Dr‌‌iverName — имя файла.

Для разрабатываемого драйвера создаётся раздел с именем kbd _ filter с переменными ErrorControl (равна 1), Start (равна 3), Type (равна 1). Т.к. не указывается, где расположен исполняемый файл драйвера, этот файл должен быть скопирован в директорию \%SystemRoot%\System32\Drivers.

В разделе фильтров клавиатуры необходимо внести в переменную UpperFilters имя драйвера-фильтра.

После перезагрузки изменения вступят в силу и драйвер-фильтр начнет работу.

Функции установки и удаления драйвера реализованы в модуле installer, который входит в состав управляющего приложения.

 

Дата: 2019-12-22, просмотров: 252.