Программирование драйверов Windows

       

Dispatch Routines


Рабочие процедуры. Функции, которые регистрируется в вызываемой самой первой процедуре драйвера (DriverEntry). Регистрация производится путем заполнения элементов массива MajorFunction (указатель на начало этого массива DriverEntry получает косвенно через аргументы своего вызова). Индексом в этом массиве являются коды IRP_MJ_Xxx, то есть описанные числами типы пакетов IRP. Если драйвер считает необходимым обрабатывать IRP запросы какого-либо типа, то в соответствующем элементе массива MajorFunction он регистрирует соответствующую функцию (записывает ее адрес). Диспетчер ввода/вывода, ориентируясь на заполнение этого массива, вызывает нужные функции драйвера - dispatch routines. Смысл данного словосочетания - "диспетчеризуемые" процедуры драйвера (а не диспетчерские!), что правильнее будет заменить на "рабочие процедуры" (функции) драйвера. Поскольку вне драйвера важны только адреса рабочих процедур (которые и регистрирует функция DriverEntry), то все рабочие процедуры драйвера могут иметь совершенно произвольные имена. Редкие исключения составляют обязательные имена функций в некоторых специальных драйверах, например, видео.



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