Pending IRPs for later processing

Hi all!

In my filter driver I’m currently considering a solution where I would need
to be able to pend incoming IRPs (for instance IRP_MJ_CREATE, IRP_MJ_WRITE
and IRP_MJ_SET_INFORMATION). I’m aware of how the actual pending of the IRPs
should be done, but have a few questions still.

  1. Is is possible to pend IRP_MJ_CREATE at all, or does it need to be
    processed without delay?

  2. Is it possible to pend paging I/O (e.g. IRP_MJ_WRITE) that would extend a
    file?

  3. Is it possible to pend synchronous IRPs, which would make them
    asynchronous?

  4. When I later decide to send the IRPs on to the underlying FSD/filter, how
    do I then make sure that this is done in the correct thread context?

TIA

/Svante