FsRtlCheckOplock 宏 (rxprocs.h)
FsRtlCheckOplock 例程将文件 I/O 操作的 IRP 与文件的当前机会锁同步 (oplock) 状态。
语法
void FsRtlCheckOplock(
A1,
A2,
A3,
A4,
A5
);
参数
A1
文件的不透明机会锁指针。 此指针必须已通过先前对 FsRtlInitializeOplock 的调用进行初始化。
A2
指向 I/O 操作的 IRP 的指针。
A3
指向调用方定义的上下文信息的指针,该信息要传递给 CompletionRoutine 和 PostIrpRoutine 参数指向的回调例程。
A4
指向调用方提供的回调例程的指针。 如果机会性锁中断正在进行,则此例程在中断完成时调用。 此参数是可选的,可以为 NULL。 如果为 NULL,则调用方将进入等待状态,直到机会锁中断完成。
此例程的声明如下:
typedef VOID (*POPLOCK_WAIT_COMPLETE_ROUTINE) ( IN PVOID Context, IN PIRP Irp ); |
此例程具有以下参数:
A5
指向调用方提供的回调例程的指针,该例程将在 I/O 操作发布到工作队列时调用。 此参数是可选的,可以为 NULL。
此例程的声明如下:
typedef VOID (*POPLOCK_FS_PREPOST_IRP) ( IN PVOID Context, IN PIRP Irp ); |
返回值
无
备注
FsRtlCheckOplock 根据以下条件将 I/O 操作的 IRP 与文件的当前机会锁定状态同步:
- 如果 I/O 操作将导致机会锁中断,则会启动机会锁中断。
- 如果 I/O 操作在机会性锁中断完成之前无法继续, FsRtlCheckOplock 将返回STATUS_PENDING并调用 PostIrpRoutine 参数指向的回调例程。
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
有关机会锁的详细信息,请参阅Microsoft Windows SDK文档。
微筛选器应调用 FltCheckOplock 而不是 FsRtlCheckOplock。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 此例程在 Microsoft Windows 2000 及更高版本的 Windows 操作系统中可用。 |
目标平台 | 通用 |
标头 | rxprocs.h (包括 FltKernel.h、Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
另请参阅
FSCTL_OPBATCH_ACK_CLOSE_PENDING