I'm trying to wtite an user-mode application with filter oplock.
NtCreateFile(&file_handle, FILE_READ_ATTRIBUTES, &oa, &iostatus, nullptr, 0, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, FILE_OPEN, FILE_RESERVE_OPFILTER, nullptr, 0);
NtFsControlFile(file_handle, nullptr, nullptr, nullptr, &iostatus, FSCTL_REQUEST_FILTER_OPLOCK, nullptr, 0, nullptr, 0);
returns STATUS_PENDING (success).
and if I call for example:
NtCreateFile(&file_handle, SYNCHRONIZE | FILE_READ_DATA, &oa, &iostatus, nullptr, 0, FILE_SHARE_READ, FILE_OPEN, 0, nullptr, 0);
it rises in an endless cycle. There is only one handle of this file.
I expected to read file and don't give sharing violation error to other applications. But my application can't read file too.
What have I done wrong?
It looks like you're new here. If you want to get involved, click one of these buttons!
|Upcoming OSR Seminars|
|Writing WDF Drivers||21 Oct 2019||OSR Seminar Space & ONLINE|
|Internals & Software Drivers||18 Nov 2019||Dulles, VA|
|Kernel Debugging||30 Mar 2020||OSR Seminar Space|
|Developing Minifilters||27 Apr 2020||OSR Seminar Space & ONLINE|