Функция IofCompleteRequest (wdm.h)
Макрос IoCompleteRequest указывает, что вызывающий объект завершил всю обработку для заданного запроса ввода-вывода и возвращает заданное IRP диспетчеру ввода-вывода.
IoCompleteRequest заключает iofCompleteRequest в оболочку.
Синтаксис
void IofCompleteRequest(
PIRP Irp,
CCHAR PriorityBoost
);
Параметры
Irp
Указатель на IRP для завершения.
PriorityBoost
Указывает определяемую системой константу CCHAR, на которую увеличивается приоритет времени выполнения исходного потока, запрашивающего операцию. Это значение IO_NO_INCREMENT, если исходный поток запросил операцию, драйвер мог быстро завершить (поэтому запрашивающий поток не получает компенсацию за предполагаемое ожидание завершения ввода-вывода), или если IRP завершается с ошибкой. В противном случае набор констант PriorityBoost зависит от типа устройства. Эти константы см. в разделе Ntddk.h или Wdm.h.
Возвращаемое значение
None
Remarks
Когда драйвер завершил всю обработку для заданного IRP, он вызывает IoCompleteRequest. Диспетчер ввода-вывода проверяет IRP, чтобы определить, настроили ли какие-либо драйверы более высокого уровня подпрограмму IoCompletion для IRP. В этом случае каждая подпрограмма IoCompletion вызывается, в свою очередь, до тех пор, пока каждый многоуровневый драйвер в цепочке не завершит IRP.
Когда все драйверы завершили выполнение заданного IRP, диспетчер операций ввода-вывода возвращает состояние исходному инициатору запроса операции. Обратите внимание, что драйвер более высокого уровня, который настраивает IRP, созданный драйвером, должен предоставить подпрограмму IoCompletion , чтобы освободить созданную им IRP.
Никогда не вызывайте IoCompleteRequest при удержании спин-блокировки. Попытка завершить IRP с удержанием спин-блокировки может привести к взаимоблокировкам.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно начиная с Windows 2000. |
Целевая платформа | Универсальное |
Верхняя часть | wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
Правила соответствия DDI | CompleteRequest, CompleteRequestStatusCheck, DoubleCompletion(wdm), HwStorPortProhibitedDDIs(storport), IoAllocateComplete, IoBuildFsdComplete, IoSetCompletionExCompleteIrp, IrpProcessingComplete(wdm), MarkIrpPending, PendedCompletedRequest(wdm), PendedCompletedRequest2, PendedCompletedRequest3, PendedCompletedRequestEx(wdm), PnpIrpCompletion(wdm), SpinLockSafe(storport), SpinLockSafe(wdm), WmiComplete(wdm) |