> [sorry for my bad English:$]
You made yourself completely clear....
There is no sure-fire way of doing this, and usually if you need to know
this it is because of a bug in your code or architecture..
As an example, if you hold a MUTEX during a lower create you will not be
tolerant to that thread calling back through you. But it is considered
buggy to hold locks during lower operations (which is not to say that
sometimes you get forced into it...).
In your example, if the lower filter called FltCreate(Intance=NULL,...) then
it wants you to see that create - if it didn't it would have specified the
instance (modulo the long running bugs in the Operating system).
You have to find another way around your problem. Imagine that there was a
way of detecting what you describe. Now consider that instead of calling
FltCreate(Instance=NULL, ....) the lower filter poked a user program and
waited for it to complete. Consider what would happen if that user program
issues a NtCreateFile(). What are you going to do about that create?
What is the problem that you re trying to solve?