Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Большинство запросов, отправляемых драйверам устройств, упаковываются в пакеты запросов ввода-вывода (IRP). Компонент операционной системы или драйвер отправляет IRP драйверу, вызвав IoCallDriver, который имеет два параметра: указатель на DEVICE_OBJECT и указатель на IRP. DEVICE_OBJECT имеет указатель на связанный DRIVER_OBJECT. Когда компонент вызывает IoCallDriver, мы говорим, что компонент отправляет IRP в объект устройства или отправляет IRP драйверу, связанному с объектом устройства. Иногда мы используем фразу, которая передает IRP или пересылает IRP вместо отправки IRP.
Обычно IRP обрабатывается несколькими драйверами, расположенными в стеке. Каждый драйвер в стеке связан с объектом устройства. Дополнительные сведения см. в разделе "Узлы устройств" и стеки устройств. При обработке Стеком устройств IRP IRP обычно отправляется в верхний объект устройства в стеке устройств. Например, если IRP обрабатывается стеком устройств, показанным на этой схеме, IRP будет отправлен сначала в объект устройства фильтра (Filter DO) в верхней части стека устройства.
схема узла устройства и стека устройств.
Передача IRP вниз стека устройств
Предположим, что диспетчер ввода-вывода отправляет IRP в фильтр DO на схеме. Драйвер, связанный с фильтром DO, AfterThought.sys, обрабатывает IRP, а затем передает его в функциональный объект устройства (FDO), который является следующим нижним объектом устройства в стеке устройств. Когда драйвер передает IRP следующему нижнему объекту устройства в стеке устройств, мы говорим, что драйвер передает IRP вниз стек устройства.
Некоторые irPs передаются вплоть до стека устройств в объект физического устройства (PDO). Другие irPs никогда не достигают PDO, потому что они завершены одним из драйверов над PDO.
IRPs являются автономными
Структура IRP является автономной в том смысле, что она содержит все сведения, необходимые драйверу для обработки запроса ввода-вывода. Некоторые части структуры IRP содержат сведения, общие для всех участвующих драйверов в стеке. Другие части IRP содержат сведения, относящиеся к конкретному драйверу в стеке.