Операционная система Microsoft Windows 3.1 для программиста. Дополнительные главы

         

Функции для работы с загружаемыми драйверами


Перед обращением к загружаемому драйверу его необходимо открыть функцией OpenDriver:

HDRVR OpenDriver( LPCSTR lpDriverName, // имя драйвера LPCSTR lpSectionName, // имя секции ini-файла LPARAM lParam); // адрес дополнительных данных

Займемся параметрами этой функции.

В процессе инсталляции устанавливаемого драйвера в секции [drivers] файла system.ini для каждого драйвера создается отдельная строка:

[drivers] Wave=galaxy.drv MIDI=galaxy.drv AUX=sgaux.drv WAST=wastdrv.dll

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

В качестве параметра lpDriverName для функции OpenDriver следует указывать имя драйвера, как оно определено в секции [drivers], или имя файла, содержащего драйвер.

Параметр lpSectionName позволяет загрузить драйвер, описанный в произвольной секции файла system.ini. Если же используется стандартная секция [drivers], этот параметр нужно указать как NULL.

В процессе открытия драйвера функция DriverProc вызывается несколько раз для обработки инициализирующих сообщений. При этом она через один из своих параметров получает значение, указанное в параметре lParam функции OpenDriver.

При нормальном завершении функция OpenDriver возвращает идентификатор драйвера, который следует сохранить для последующих обращений к драйверу.

После завершения работы с драйвером его необходимо закрыть функцией CloseDriver:

LRESULT CloseDriver( HDRVR hdrvr, // идентификатор драйвера LPARAM lParam1, // дополнительные данные 1 LPARAM lParam2); // дополнительные данные 2

В процессе закрытия драйвера, как и при его открытии, функция DriverProc вызывается несколько раз для обработки завершающих сообщений. При этом она через свои параметры получает значения, указанные в параметрах lParam1 и lParam2 функции CloseDriver.

Для взаимодействия с загружаемым драйвером приложения Windows и DLL-библиотеки используют функцию SendDriverMessage, которая посылает сообщение функции DriverProc. Приведем прототип функции SendDriverMessage:

LRESULT SendDriverMessage( HDRVR hdrvr, // идентификатор драйвера UINT msg, // код сообщения LPARAM lParam1, // первый параметр LPARAM lParam2); // второй параметр



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