Макрос FsRtlCheckOplock (rxprocs.h)
Подпрограмма FsRtlCheckOplock синхронизирует IRP для операции ввода-вывода файла с текущим оппортунистическим состоянием блокировки (oplock).
Синтаксис
void FsRtlCheckOplock(
A1,
A2,
A3,
A4,
A5
);
Параметры
A1
Непрозрачный оппортунистический указатель блокировки для файла. Этот указатель должен быть инициализирован предыдущим вызовом FsRtlInitializeOplock.
A2
Указатель на IRP для операции ввода-вывода.
A3
Указатель на определяемые вызывающим объектом контекстные сведения, передаваемые подпрограммам обратного вызова, на которые указывают параметры CompletionRoutine и PostIrpRoutine .
A4
Указатель на подпрограмму обратного вызова, предоставляемую вызывающим абонентом. Если выполняется оппортунистический разрыв блокировки, эта подпрограмма вызывается по завершении перерыва. Этот параметр является необязательным и может иметь значение NULL. Если значение равно NULL, вызывающий объект переводится в состояние ожидания до завершения оппортунистического разрыва блокировки.
Эта подпрограмма объявляется следующим образом:
typedef VOID (*POPLOCK_WAIT_COMPLETE_ROUTINE) ( IN PVOID Context, IN PIRP Irp ); |
Эта подпрограмма имеет следующие параметры:
- Контексте
- Irp
Указатель сведений о контексте, переданный в параметре Context в FsRtlCheckOplock.
Указатель на IRP для операции ввода-вывода.
A5
Указатель на подпрограмму обратного вызова, предоставляемую вызывающим абонентом, которая будет вызвана, если операция ввода-вывода помещается в рабочую очередь. Этот параметр является необязательным и может иметь значение NULL.
Эта подпрограмма объявляется следующим образом:
typedef VOID (*POPLOCK_FS_PREPOST_IRP) ( IN PVOID Context, IN PIRP Irp ); |
- Контексте
- Irp
Указатель сведений о контексте, переданный в параметре Context в FsRtlCheckOplock.
Указатель на IRP для операции ввода-вывода.
Возвращаемое значение
None
Remarks
FsRtlCheckOplock синхронизирует IRP для операции ввода-вывода с текущим оппортунистическим состоянием блокировки файла в соответствии со следующими условиями:
- Если операция ввода-вывода приведет к прерыванию оппортунистической блокировки, инициируется оппортунистическая блокировка.
- Если операция ввода-вывода не может продолжаться до завершения оппортунистического разрыва блокировки, функция 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) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
См. также раздел
FSCTL_OPBATCH_ACK_CLOSE_PENDING