Завершение IRP
"Завершение IRP" — это сокращенная фраза, которая означает "разрешить всем членам стека драйверов завершить операцию ввода-вывода". После завершения IRP диспетчер операций ввода-вывода уведомляет инициирующее приложение о завершении запрошенной операции ввода-вывода.
Когда драйвер завершает обработку IRP, он вызывает IoCompleteRequest (обычно из подпрограммы DpcForIsr ). Это приводит к тому, что диспетчер операций ввода-вывода определяет, настроили ли какие-либо драйверы более высокого уровня процедуры IoCompletion для IRP. Если это так, то каждая подпрограмма IoCompletion вызывается, по очереди, пока каждый многоуровневый драйвер в цепочке не завершит IRP.
Когда все драйверы завершат IRP, диспетчер ввода-вывода возвращает состояние исходному инициатору запроса операции. Обратите внимание, что драйвер более высокого уровня, который настраивает IRP, созданный драйвером, должен предоставить подпрограмму IoCompletion , чтобы освободить созданное им IRP.
В этом разделе рассматриваются следующие вопросы.