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

Большинство драйверов должны обрабатывать следующие процедуры диспетчеризации :

  • DispatchPnP

    IRP_MJ_PNP указывает на запрос, включающий распознавание устройств PnP, конфигурацию оборудования или выделение ресурсов. Такие запросы обычно отправляются в драйвер устройства из диспетчера PnP или от тесно связанного драйвера более высокого уровня.

  • DispatchPower

    IRP_MJ_POWER указывает на запрос, относящийся к состоянию питания устройства или системы. Такие запросы отправляются драйверу устройства диспетчером питания или драйвером более высокого уровня.

  • DispatchCreate

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

  • DispatchClose

    IRP_MJ_CLOSE указывает, что последний дескриптор объекта файла, связанный с объектом целевого устройства, был закрыт и освобожден. Все запросы ввода-вывода были завершены или отменены, поэтому отсутствуют оставшиеся ссылки на указатель объекта файла.

  • DispatchRead

    IRP_MJ_READ указывает на запрос ввода-вывода для передачи данных с базового физического устройства в систему.

  • DispatchWrite

    IRP_MJ_WRITE указывает на запрос ввода-вывода для передачи данных из системы на базовое физическое устройство.

  • DispatchDeviceControl

    IRP_MJ_DEVICE_CONTROL указывает на запрос, содержащий системный код элемента управления вводом-выводом для конкретного типа устройства, указывающий операцию для конкретного типа устройства. Драйверы более высокого уровня передают эти irP в базовые драйверы устройств, которые обычно обрабатывают запрос путем доступа к устройству.

  • DispatchInternalDeviceControl

    IRP_MJ_INTERNAL_DEVICE_CONTROL указывает на запрос, отправленный драйверу устройства, в большинстве случаев от тесно связанного драйвера более высокого уровня, как правило, с частным, конкретным драйвером и типом устройства или кодом управления вводом-выводом для конкретного устройства, запрашивающим операцию конкретного типа устройства или конкретного устройства.

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

  • DispatchSystemControl

    IRP_MJ_SYSTEM_CONTROL используется для указания запросов WMI к драйверам. Дополнительные сведения о инструментарии управления Windows см. в статье Инструментарий управления Windows.

Процедуры диспетчеризации, которые должен предоставить драйвер, зависят от типа и функциональности базового физического устройства. Сведения об основных кодах функций IRP, которые должны обрабатывать драйверы, см. в документации по устройствам в комплекте драйверов Windows (WDK).