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) |