IRP_MJ_DEVICE_CONTROL

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

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

При отправке

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

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

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

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

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

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

Операция

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

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

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

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

Требования

Заголовок

WDM. h (включает WDM. h, Нтддк. h или Нтифс. h)

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

диспатчдевицеконтрол