- •Лекция №9. Многоуровневая модель драйверов. Уровневые драйвера и драйвера-фильтры. [9.1] Понимание многоуровневой модели драйверов
- •[9.2] Реализация уровневых драйверов
- •[9.2.1] Объединение драйверов в стек и освобождение драйверов стека
- •[9.2.2.] Обработка запросов irp стеком драйверов
- •[9.2.2.1] Самостоятельная обработка irp драйвером
- •[9.2.2.2] Передача первоначального пакета irp драйверу нижележащего уровня
- •[9.2.2.3] Создание новых пакетов irp для передачи драйверу нижележащего уровня
- •[9.2.2.4] Создание новых ассоциированных пакетов irp для передачи драйверу нижележащего уровня
- •[9.2.2.5] Получение драйвером вышележащего уровня уведомления о завершении обработки irp драйвером нижележащего уровня (Completion Notification)
- •[9.3] Реализация драйверов-фильтров
- •[9.3.1] Подключение фильтра к устройству
- •[9.3.2] Выгрузка драйвера-фильтра
[9.3.2] Выгрузка драйвера-фильтра
Для отсоединения подсоединенного устройства служит функция IoDetachDevice.
VOID IoDetachDevice(IN OUT PDEVICE_OBJECT TargetDevice);
Соответственно, функция выгрузки драйвера-фильтра DriverUnload должна делать примерно следующее:
С помощью вызова ObDereferenceObject() уменьшить счетчик ссылок на объект-файл, полученный в результате вызова IoGetDeviceObjectPointer().
Для каждого объекта-устройство, принадлежащего выгружаемому драйверу-фильтру, вызвать IoDetachDevice() и IoDeleteDevice().
Лекция №9. Многоуровневая модель драйверов. Уровневые драйвера и драйвера-фильтры. 1
[9.1] Понимание многоуровневой модели драйверов 1
[9.2] Реализация уровневых драйверов 1
[9.2.1] Объединение драйверов в стек и освобождение драйверов стека 2
[9.2.2.] Обработка запросов IRP стеком драйверов 3
[9.2.2.1] Самостоятельная обработка IRP драйвером 3
[9.2.2.2] Передача первоначального пакета IRP драйверу нижележащего уровня 3
[9.2.2.3] Создание новых пакетов IRP для передачи драйверу нижележащего уровня 4
[9.2.2.4] Создание новых ассоциированных пакетов IRP для передачи драйверу нижележащего уровня 5
[9.2.2.5] Получение драйвером вышележащего уровня уведомления о завершении обработки IRP драйвером нижележащего уровня (Completion Notification) 5
[9.3] Реализация драйверов-фильтров 7
[9.3.1] Подключение фильтра к устройству 7
[9.3.2] Выгрузка драйвера-фильтра 8