Can't handle FILE_COMPLETE_IF_OPLOCKED

In my filter,I want to ZwCreateFile(by Shadow DO) before the Original IRP_MJ_CREATE in the

same thread context.
If the original IRP_MJ_CREATE is with FILE_COMPLETE_IF_OPLOCKED,I do my ZwCreateFile with

FILE_COMPLETE_IF_OPLOCKED too.
When the ZwCreateFile returns STATUS_OPLOCK_BREAK_IN_PROGRESS,I get the FCB,and wait the

FSCTL_OPLOCK_BREAK_NOTIFY(to the same FCB).En,I filter the

IRP_MJ_FILE_SYSTEM_CONTROL/IRP_MN_USER_FS_REQUEST for it.

But,I can’t get the FSCTL_OPLOCK_BREAK_NOTIFY.Why?And what should I do?
Thanks for help ~~~~

This is my analyse:
If a IRP_MJ_CREATE returns STATUS_OPLOCK_BREAK_IN_PROGRESS,the SRV(the caller) will return this STATUS_OPLOCK_BREAK_IN_PROGRESS to the reomte client.And then,the remote client will issue the write back operation,and send the FSCTL_OPLOCK_BREAK_NOTIFY.

In my design,I call ZwCreateFile before the original IRP_MJ_CREATE,and if the ZwCreateFile returns STATUS_OPLOCK_BREAK_IN_PROGRESS,I will wait for the FSCTL_OPLOCK_BREAK_NOTIFY.But,because I didn’t return the STATUS_OPLOCK_BREAK_IN_PROGRESS to caller(the SRV),so the SRV can’t return it to the remote client.
That’s it,the remote caller can’t issue the write-back operation and FSCTL_OPLOCK_BREAK_NOTIFY.

And there is a question:
If the remote client open a file(\192.168.5.2\Share\1.txt , is D:\Share\1.txt in the server) for write(Level 1 Oplock),and then I open the file in local( D:\Share\1.txt).
It will issue an oplock break?It should be.
OK,in my mind,this IRP_MJ_CREATE (I Open the file in local) don’t have the flag FILE_COMPLETE_IF_OPLOCKED,right?
So,the IRP_MJ_CREATE will be blocked for waitting the remote client write back.Will it experience a deadlock?!

If the answer for the above question is:

>this IRP_MJ_CREATE (I Open the file in local) don’t have the flag FILE_COMPLETE_IF_OPLOCKED,right?
Yes!
>the IRP_MJ_CREATE will be blocked for waitting the remote client write back.Will it experience a deadlock?!
No!

OK,according to the answer,I can design my filter:
If the original IRP_MJ_CREATE is with FILE_COMPLETE_IF_OPLOCKED,I will call ZwCreateFile without FILE_COMPLETE_IF_OPLOCKED to open it in my thread context( in my userspace process,not the System Process).
will it can works?

Another question:
If the original IRP_MJ_CREATE is with FILE_COMPLETE_IF_OPLOCKED ,Can I decide it is oplocked(return STATUS_OPLOCK_BREAK_IN_PROGRESS) or not(return STATUS_SUCCESS) before send it down?
What should I do?