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


Завершение IRP

"Завершение IRP" — это сокращенная фраза, которая означает", что позволяет всем членам стека драйверов завершить операцию ввода-вывода". После завершения IRP диспетчер ввода-вывода уведомляет инициирующее приложение о завершении запрошенной операции ввода-вывода.

Когда драйвер завершил обработку IRP, он вызывает IoCompleteRequest (обычно из DpcForIsr подпрограммы). Это приводит к тому, что диспетчер ввода-вывода определяет, настроены ли драйверы более высокого уровня IoCompletion подпрограммы IRP. Если это так, каждая процедура IoCompletion вызывается поочерёдно, пока каждый многослойный драйвер в цепочке не завершит IRP.

Когда все драйверы завершили обработку IRP, диспетчер ввода-вывода сообщает о состоянии исходному инициатору операции. Обратите внимание, что драйвер более высокого уровня, который настраивает созданный драйвером IRP, должен предоставить процедуру IoCompletion, чтобы освободить созданный IRP.

В этом разделе содержатся следующие разделы:

Когда завершать IRP

Завершение IRPs в подпрограммах диспетчеризации

Использование рутин IoCompletion