Установка указателей функций для сервисов драйвера

В этом фрагменте кода переменная DriverObject —на объект драйвера для Bios_probe. Он передается драйверу ядр0^ Windows при инициализации драйвера ядром. Нужно инициализировать це сколько указателей функций. Мы видели, что указатели функций-членов объекта драйвера инициализируются таким образом, чтобы они указывали на функции, которые были объявлены перед этим в заголовочном файле. На пример, член Driverunload Объекта драйвера инициализируется указателем на функцию DispatchUnload. Функция Driverunload Исполняется, когда драйвер выгружается из памяти. Чтобы драйвер устройства мог работать этот указатель на функцию должен быть инициализирован. Следующая пе­ременная, MajorFunction, Представляет собой массив для членов объекта драйвера. В этом массиве хранятся указатели на функции, которые обрабаты­вают пакеты IRP. Как только элементы этого массива будут инициализирова­ны, диспетчер ввода-вывода будет передавать необходимые пакеты IRP в со­ответствующие функции в драйвере Bios_probe По запросам от приложения пользовательского режима, обращающегося к драйверу за требующимися ему сервисами. Например, когда приложение пользовательского режима вы­зывает функцию API CreateFile, Чтобы открыть дескриптор драйвера, драй­вер обслуживает этот вызов функцией, на которую указывает член MajorFunction Объекта Драйвера, Т. Е. функцией DispatchCreate. При вызове пользовательским приложением функции API CloseHandie, Оно передает этой функции в качестве входного параметра дескриптор драйвера Bios__probe, Который оно получило в предыдущем вызове функции API CreateFile. Драйвер обслуживает этот вызов функцией, на которую указыва­ет член MajorFunction Объекта драйвера Bios_probe, Т. е. функцией Dispatchciose. Что же касается функции, на которую указывает член MajorFunction Объекта драйвера, то она вызывается, ко­гда приложение пользовательского режима вызывает функцию API ReadFile И передает ей дескриптор драйвера Bios_probe



Рубрика: Женский интерес

Комментарии закрыты.