Freigeben über


IofCompleteRequest-Funktion (wdm.h)

Das IoCompleteRequest Makro gibt an, dass der Aufrufer die gesamte Verarbeitung einer bestimmten E/A-Anforderung abgeschlossen hat und das angegebene IRP an den E/A-Manager zurückgibt.

IoCompleteRequest umschließt IofCompleteRequest-.

Syntax

void IofCompleteRequest(
  PIRP  Irp,
  CCHAR PriorityBoost
);

Parameter

Irp

Zeiger auf das zu durchlaufende IRP.

PriorityBoost

Gibt eine vom System definierte CCHAR-Konstante an, um die Laufzeitpriorität des ursprünglichen Threads zu erhöhen, der den Vorgang angefordert hat. Dieser Wert ist IO_NO_INCREMENT, wenn der ursprüngliche Thread einen Vorgang angefordert hat, den der Treiber schnell abschließen konnte (sodass der anfordernde Thread nicht für die angenommene Wartezeit auf den Abschluss von E/A kompensiert wird) oder wenn der IRP mit einem Fehler abgeschlossen wurde. Andernfalls sind die PriorityBoost- Konstanten gerätetypspezifisch. Diese Konstanten finden Sie unter Ntddk.h oder Wdm.h.

Rückgabewert

Nichts

Bemerkungen

Wenn ein Treiber die gesamte Verarbeitung für ein bestimmtes IRP abgeschlossen hat, ruft er IoCompleteRequestauf. Der I/O-Manager überprüft das IRP, um zu ermitteln, ob höhere Treiber eine IoCompletion- Routine für das IRP eingerichtet haben. Wenn ja, wird jede IoCompletion- Routine wiederum aufgerufen, bis jeder layerierte Treiber in der Kette das IRP abgeschlossen hat.

Wenn alle Treiber ein bestimmtes IRP abgeschlossen haben, gibt der E/A-Manager den Status an den ursprünglichen Anforderer des Vorgangs zurück. Beachten Sie, dass ein höherer Treiber, der ein vom Treiber erstelltes IRP einrichte, eine IoCompletion- Routine bereitstellen muss, um das erstellte IRP freizugeben.

Rufen Sie niemals IoCompleteRequest- auf, während Sie eine Drehungssperre halten. Wenn Sie versuchen, ein IRP abzuschließen, während Sie eine Drehsperre halten, können Deadlocks verursacht werden.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Ab Windows 2000 verfügbar.
Zielplattform- Universal
Header- wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- <= DISPATCH_LEVEL
DDI-Complianceregeln CompleteRequest, CompleteRequestStatusCheck, DoubleCompletion(wdm), HwStorPortProhibitedDIs(storport), IoAllocateComplete, IoBuildFsdComplete, IoSetCompletionExCompleteIrp, IrpProcessingComplete(wdm), MarkIrpPending, PendedCompletedRequest(wdm), PendedCompletedRequest2, PendedCompletedRequest3, PendedCompletedRequestEx(wdm), PnpIrpCompletion(wd), SpinLockSafe(storport), SpinLockSafe(wdm), WmiComplete(wdm)

Siehe auch

IoSetCompletionRoutine