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 den angegebenen IRP an den E/A-Manager zurückgibt.

IoCompleteRequest umschließt IofCompleteRequest.

Syntax

void IofCompleteRequest(
  PIRP  Irp,
  CCHAR PriorityBoost
);

Parameter

Irp

Zeiger auf die zu erledigende IRP.

PriorityBoost

Gibt eine systemdefinierte 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 der 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

Keine

Bemerkungen

Wenn ein Treiber die gesamte Verarbeitung für einen bestimmten IRP abgeschlossen hat, ruft er IoCompleteRequest auf. Der E/A-Manager überprüft das IRP, um zu ermitteln, ob Treiber auf höherer Ebene eine IoCompletion-Routine für das IRP eingerichtet haben. Wenn ja, wird jede IoCompletion-Routine wiederum aufgerufen, bis jeder mehrstufige Treiber in der Kette den IRP abgeschlossen hat.

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

Rufen Sie niemals IoCompleteRequest auf, während Sie eine Drehsperre halten. Der Versuch, eine IRP abzuschließen, während eine Drehsperre gedrückt wird, kann zu Deadlocks führen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows 2000.
Zielplattform Universell
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek 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(wdm), SpinLockSafe(storport), SpinLockSafe(wdm), WmiComplete(wdm)

Weitere Informationen

IoSetCompletionRoutine