Написание подпрограмм диспетчеризации

Обработка любого пакета запроса ввода-вывода (IRP) начинается в подпрограмме диспетчеризации, которая регистрируется драйвером для обработки кода основной функции IRP (IRP_MJ_*XXX). Подпрограмма DriverEntry драйвера экспортирует точки входа для подпрограмм диспетчеризации в таблице диспетчеризации в структуре DRIVER_OBJECT* драйвера.

Драйвер может предоставить отдельную подпрограмму диспетчеризации для каждого основного кода функции ввода-вывода, который он обрабатывает. Кроме того, подпрограммы диспетчеризации можно записать для обработки нескольких кодов функций ввода-вывода.

В этом разделе рассматриваются следующие вопросы.

Функциональность подпрограммы диспетчеризации

Обязательные подпрограммы диспетчеризации

Необязательные подпрограммы диспетчеризации

Подпрограммы и списки IRQL диспетчеризации

Когда следует проверять расположение стека ввода-вывода драйвера

Подпрограммы DispatchCreate, DispatchClose и DispatchCreateClose

Подпрограммы DispatchCleanup

Подпрограммы DispatchRead, DispatchWrite и DispatchReadWrite

Подпрограммы DispatchDeviceControl и DispatchInternalDeviceControl

Подпрограммы DispatchPnP

Подпрограммы DispatchPower

Подпрограммы DispatchQueryInformation

Подпрограммы DispatchSetInformation

Подпрограммы DispatchFlushBuffers

Подпрограммы DispatchShutdown

Подпрограммы DispatchSystemControl