Checking the Oplock State of an IRP_MJ_READ operation
The following oplock break conditions apply when a stream is being read. If a TxF transacted reader performs the read, this check is not made since a transacted reader excludes a writer (that is, a writer holding an oplock cannot be present at all).
Conditions for Level 2, Filter, Read, and Read-Handle request types
The oplock is not broken.
No acknowledgment is required, and the operation proceeds immediately.
Conditions for Level 1, Batch, Read-Write, and Read-Write-Handle request types
Break on IRP_MJ_READ when the read operation occurs on a FILE_OBJECT with an oplock key that differs from the key of the FILE_OBJECT that owns the oplock. If the oplock is broken:
Level 1 and Batch requests break to Level 2.
Read-Write requests break to Read.
Read-Write-Handle requests break to Read-Handle.
An acknowledgment must be received before the operation continues.