Обязательные подпрограммы диспетчеризации
Большинство драйверов должны обрабатывать следующие процедуры диспетчеризации :
-
IRP_MJ_PNP указывает на запрос, включающий распознавание устройств PnP, конфигурацию оборудования или выделение ресурсов. Такие запросы обычно отправляются в драйвер устройства из диспетчера PnP или от тесно связанного драйвера более высокого уровня.
-
IRP_MJ_POWER указывает на запрос, относящийся к состоянию питания устройства или системы. Такие запросы отправляются драйверу устройства диспетчером питания или драйвером более высокого уровня.
-
IRP_MJ_CREATE указывает, что защищенная пользователем подсистема, возможно, от имени приложения или драйвера подсистемы, запросила дескриптор для объекта файла, связанного с объектом целевого устройства, или что драйвер более высокого уровня подключает свой объект устройства к целевому объекту устройства или подключает его к нему.
-
IRP_MJ_CLOSE указывает, что последний дескриптор объекта файла, связанный с объектом целевого устройства, был закрыт и освобожден. Все запросы ввода-вывода были завершены или отменены, поэтому отсутствуют оставшиеся ссылки на указатель объекта файла.
-
IRP_MJ_READ указывает на запрос ввода-вывода для передачи данных с базового физического устройства в систему.
-
IRP_MJ_WRITE указывает на запрос ввода-вывода для передачи данных из системы на базовое физическое устройство.
-
IRP_MJ_DEVICE_CONTROL указывает на запрос, содержащий системный код элемента управления вводом-выводом для конкретного типа устройства, указывающий операцию для конкретного типа устройства. Драйверы более высокого уровня передают эти irP в базовые драйверы устройств, которые обычно обрабатывают запрос путем доступа к устройству.
-
IRP_MJ_INTERNAL_DEVICE_CONTROL указывает на запрос, отправленный драйверу устройства, в большинстве случаев от тесно связанного драйвера более высокого уровня, как правило, с частным, конкретным драйвером и типом устройства или кодом управления вводом-выводом для конкретного устройства, запрашивающим операцию конкретного типа устройства или конкретного устройства.
Для обработки определяемых системой внутренних запросов управления вводом-выводом устройств требуются только определенные типы драйверов, включая определенные драйверы SCSI, драйверы клавиатуры или мыши, а также параллельные драйверы, которые взаимодействуют с системными драйверами.
-
IRP_MJ_SYSTEM_CONTROL используется для указания запросов WMI к драйверам. Дополнительные сведения о инструментарии управления Windows см. в статье Инструментарий управления Windows.
Процедуры диспетчеризации, которые должен предоставить драйвер, зависят от типа и функциональности базового физического устройства. Сведения об основных кодах функций IRP, которые должны обрабатывать драйверы, см. в документации по устройствам в комплекте драйверов Windows (WDK).