Abschließen von IRPs

"Abschließen eines IRP" ist ein Kurzbegriff, der bedeutet, dass alle Mitglieder des Treiberstapels einen E/A-Vorgang abschließen können. Nachdem die IRP abgeschlossen wurde, benachrichtigt der E/A-Manager die initiierende Anwendung, dass der angeforderte E/A-Vorgang abgeschlossen wurde.

Wenn ein Treiber die Verarbeitung eines IRP abgeschlossen hat, ruft er IoCompleteRequest auf (in der Regel aus einer DpcForIsr-Routine ). Dadurch ermittelt der E/A-Manager, ob höhere Treiber IoCompletion-Routinen für die IRP eingerichtet haben. Wenn ja, wird jede IoCompletion-Routine wiederum aufgerufen, bis jeder Mehrschichttreiber in der Kette den IRP abgeschlossen hat.

Wenn alle Treiber die 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 eine vom Treiber erstellte IRP einrichte, eine IoCompletion-Routine bereitstellen muss, um das erstellte IRP freizugeben.

Dieser Abschnitt enthält die folgenden Themen:

Wann ein IRP abgeschlossen werden soll

Abschließen von IRPs in Dispatch-Routinen

Verwenden von IoCompletion-Routinen