Is IRP_MJ_CREATE_NAMED_PIPE pre-op always at PASSIVE_LEVEL?

I know IRP_MJ_CREATE pre-op is guaranteed to be at PASSIVE_LEVEL. I’d assume the other two IRP_MJ_CREATE_* pre-ops are the same, but can’t find anything in the docs guaranteeing it.

I’m guessing that it is but until it is written down its a risk to trust it.

What I’d do would be to put in a bug report on the docs (or even a PR) and if it can be non passive then you’ll find out and if it cannot be it then becomes “documented behavior”.

2 Likes

It has been my understanding that all the Create Files (named pipe, mailslot, and “normal”) always come at IRQL PASSIVE_LEVEL. They all “come from the same place” in the OS (you can very easily walk into the code for any of the relevant system services to see this)… so none of them should be handled uniquely.

Peter