Windows System Software -- Consulting, Training, Development -- Unique Expertise, Guaranteed Results

Before Posting...
Please check out the Community Guidelines in the Announcements and Administration Category.

Question about IoMarkIrpPending() in completion routine

jguo5258jguo5258 Member Posts: 22

so I watched a video tutorial on a filter driver using this code in the completion routine:
if (Irp->pendingreturned)

If the bottom driver returns STATUS_PENDING, and the IRP is marked as pending on its way up, then how does the IRP get completed? What happens to the IRP after it is marked as pending? Does it just hang there?


  • Peter_Viscarola_(OSR)Peter_Viscarola_(OSR) Administrator Posts: 7,619

    When the IRP is left pending, it’s a contract that SOMEBODY handling the IRP, eventually, in the future will call IoCompleteRequest on it.

    Marking the IRP pending, and returning STATUS_PENDING are ways we tell the I/O Manager “I am not completing the IRP now... somebody will complete it later”... this lets the issuing continue running (optionally) while the I/O is in progress.


    Peter Viscarola

Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Upcoming OSR Seminars
Kernel Debugging 30 Mar 2020 OSR Seminar Space
Writing WDF Drivers 13 April 2020 OSR Seminar Space & ONLINE
Developing Minifilters 20 Apr 2020 OSR Seminar Space & ONLINE
Internals & Software Drivers TBD Dulles, VA