Написание подпрограмм диспетчеризации
Обработка любого пакета запроса ввода-вывода (IRP) начинается в подпрограмме диспетчеризации, которая регистрируется драйвером для обработки кода основной функции IRP (IRP_MJ_*XXX). Подпрограмма DriverEntry драйвера экспортирует точки входа для подпрограмм диспетчеризации в таблице диспетчеризации в структуре DRIVER_OBJECT* драйвера.
Драйвер может предоставить отдельную подпрограмму диспетчеризации для каждого основного кода функции ввода-вывода, который он обрабатывает. Кроме того, подпрограммы диспетчеризации можно записать для обработки нескольких кодов функций ввода-вывода.
В этом разделе рассматриваются следующие вопросы.
Функциональность подпрограммы диспетчеризации
Обязательные подпрограммы диспетчеризации
Необязательные подпрограммы диспетчеризации
Подпрограммы и списки IRQL диспетчеризации
Когда следует проверять расположение стека ввода-вывода драйвера
Подпрограммы DispatchCreate, DispatchClose и DispatchCreateClose
Подпрограммы DispatchRead, DispatchWrite и DispatchReadWrite
Подпрограммы DispatchDeviceControl и DispatchInternalDeviceControl
Подпрограммы DispatchQueryInformation
Подпрограммы DispatchSetInformation