The free OSR Learning Library has more than 50 articles on a wide variety of topics about writing and debugging device drivers and Minifilters. From introductory level to advanced. All the articles have been recently reviewed and updated, and are written using the clear and definitive style you've come to expect from OSR over the years.
Check out The OSR Learning Library at: https://www.osr.com/osr-learning-library/
When you have a legacy Level 1 oplock broken with FILE_OPLOCK_BROKEN_TO_LEVEL_2, you get the FSCTL_OPLOCK_BREAK_ACKNOWLEDGE IRP pended, so that you can be notified whenever the Level 2 oplock breaks. That means you can acknowledge the first oplock break and wait for the new oplock level to be broken using only one IRP.
As far as I could understand, this is not possible when using Win7 oplocks. When you have an RW oplock broken to R (from REQUEST_OPLOCK_OUTPUT_BUFFER.NewOplockLevel), you must first acknowledge the oplock break, and this IRP will always complete, then you must request a new R oplock that will be pended until the oplock breaks to none.
Is that true?
Am I missing anything?
Fernando Roberto da Silva
DriverEntry Kernel Development
|Upcoming OSR Seminars|
|OSR has suspended in-person seminars due to the Covid-19 outbreak. But, don't miss your training! Attend via the internet instead!|
|Writing WDF Drivers||7 Dec 2020||LIVE ONLINE|
|Internals & Software Drivers||25 Jan 2021||LIVE ONLINE|
|Developing Minifilters||Early 2021||LIVE ONLINE|