FsRtlCheckOplock macro (rxprocs.h)
The FsRtlCheckOplock routine synchronizes the IRP for a file I/O operation with the file's current opportunistic lock (oplock) state.
Syntax
void FsRtlCheckOplock(
A1,
A2,
A3,
A4,
A5
);
Parameters
A1
An opaque opportunistic lock pointer for the file. This pointer must have been initialized by a previous call to FsRtlInitializeOplock.
A2
A pointer to the IRP for the I/O operation.
A3
A pointer to caller-defined context information to be passed to the callback routines that the CompletionRoutine and PostIrpRoutine parameters point to.
A4
A pointer to a caller-supplied callback routine. If an opportunistic lock break is in progress, this routine is called when the break is completed. This parameter is optional and can be NULL. If it is NULL, the caller is put into a wait state until the opportunistic lock break is completed.
This routine is declared as follows:
typedef VOID (*POPLOCK_WAIT_COMPLETE_ROUTINE) ( IN PVOID Context, IN PIRP Irp ); |
This routine has the following parameters:
- Context
- Irp
A context information pointer that was passed in the Context parameter to FsRtlCheckOplock.
A pointer to the IRP for the I/O operation.
A5
A pointer to a caller-supplied callback routine to be called if the I/O operation is posted to a work queue. This parameter is optional and can be NULL.
This routine is declared as follows:
typedef VOID (*POPLOCK_FS_PREPOST_IRP) ( IN PVOID Context, IN PIRP Irp ); |
- Context
- Irp
A context information pointer that was passed in the Context parameter to FsRtlCheckOplock.
A pointer to the IRP for the I/O operation.
Return value
None
Remarks
FsRtlCheckOplock synchronizes the IRP for an I/O operation with the current opportunistic lock state of a file according to the following conditions:
- If the I/O operation will cause the opportunistic lock to break, the opportunistic lock break is initiated.
- If the I/O operation cannot continue until the opportunistic lock break is complete, FsRtlCheckOplock returns STATUS_PENDING and calls the callback routine that the PostIrpRoutine parameter points to.
IRP_MJ_CLEANUP
IRP_MJ_CREATE
IRP_MJ_FILE_SYSTEM_CONTROL
IRP_MJ_FLUSH_BUFFERS
IRP_MJ_LOCK_CONTROL
IRP_MJ_READ
IRP_MJ_SET_INFORMATION
IRP_MJ_WRITE
For detailed information about opportunistic locks, see the Microsoft Windows SDK documentation.
Minifilters should call FltCheckOplock instead of FsRtlCheckOplock.
Requirements
Requirement | Value |
---|---|
Minimum supported client | This routine is available in Microsoft Windows 2000 and later versions of Windows operating systems. |
Target Platform | Universal |
Header | rxprocs.h (include FltKernel.h, Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
See also
FSCTL_OPBATCH_ACK_CLOSE_PENDING