В этом фрагменте кода переменная 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
Рубрика: Женский интерес