Поделиться через


IRP_MJ_DEVICE_CONTROL

Каждый драйвер, объекты которого относятся к определенному типу устройства (см . раздел Указание типов устройств), должен поддерживать этот запрос в подпрограмме DispatchDeviceControl , если для типа существует набор системных кодов управления вводом-выводом (IOCTLs). Дополнительные сведения о IOCTL см. в статье Введение в коды элементов управления ввода-вывода.

Драйверы более высокого уровня обычно передают эти запросы базовому драйверу устройства. Предполагается, что каждый драйвер устройства в стеке драйверов поддерживает этот запрос вместе с набором типов устройств, общедоступных или частных IOCTL. Дополнительные сведения о ioCTL для определенных типов устройств см. в документации по конкретному типу устройства в пакете драйверов Microsoft Windows (WDK).

При отправке

В любой момент после успешного выполнения запроса на создание.

Входные параметры

Код элемента управления вводом-выводом содержится в разделе Parameters.DeviceIoControl.IoControlCode в расположении стека ввода-вывода драйвера для IRP.

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

Выходные параметры

Выходные параметры зависят от значения кода элемента управления вводом-выводом. Дополнительные сведения см. в разделе Описания буфера для кодов управления вводом-выводом.

Операция

Драйвер получает этот код элемента управления вводом-выводом, так как поток пользовательского режима вызвал функцию Microsoft Win32 DeviceIoControl или драйвер режима ядра более высокого уровня настроил запрос. Возможно, драйвер пользовательского режима называется DeviceIoControl, передавая определенный драйвером (также называемый частным) код управления вводом-выводом, чтобы запросить поддержку для конкретного устройства или драйвера от тесно связанного драйвера устройства в режиме ядра.

При получении запроса на управление вводом-выводом устройства драйвер более высокого уровня обычно передает IRP следующему более низкому драйверу. Однако есть некоторые исключения из этой практики. Например, драйвер класса с сохраненными сведениями о конфигурации, полученными от базового драйвера порта, может выполнять определенные запросы IOCTL_XXX , не передавая IRP соответствующему драйверу порта.

Получив запрос на управление вводом-выводом устройства, драйвер устройства проверяет код элемента управления вводом-выводом, чтобы определить, как выполнить запрос. Для большинства общедоступных кодов управления вводом-выводом драйверы устройств передают небольшой объем данных в буфер irp-AssociatedIrp.SystemBuffer> или из буфера.

Общие сведения об контрольных кодах ввода-вывода для запросов IRP_MJ_DEVICE_CONTROL или IRP_MJ_INTERNAL_DEVICE_CONTROL см. в статье Использование кодов управления вводом-выводом. См. также раздел Запросы ввода-вывода Type-Specific устройств.

Требования

Заголовок

Wdm.h (включая Wdm.h, Ntddk.h или Ntifs.h)

См. также раздел

DispatchDeviceControl