Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
подпрограмма 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
Указатель сведений о контексте, переданный в параметре контекста для FsRtlCheckOplock.
Указатель на IRP для операции ввода-вывода.
A5
Указатель на подпрограмму обратного вызова, предоставленного вызывающим абонентом, который должен вызываться, если операция ввода-вывода помещается в рабочую очередь. Этот параметр является необязательным и может быть null.
Эта подпрограмма объявлена следующим образом:
typedef VOID
(*POPLOCK_FS_PREPOST_IRP) (
IN PVOID Context,
IN PIRP Irp
);
|
- контекста
- Irp
Указатель сведений о контексте, переданный в параметре контекста для FsRtlCheckOplock.
Указатель на IRP для операции ввода-вывода.
Возвращаемое значение
Никакой
Замечания
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
Подробные сведения о оппортунистических блокировках см. в документации по пакету SDK для Microsoft Windows.
Минифильтры должны вызывать FltCheckOplock вместо FsRtlCheckOplock.
Требования
| Требование | Ценность |
|---|---|
| минимальные поддерживаемые клиентские | Эта подпрограмма доступна в Microsoft Windows 2000 и более поздних версиях операционных систем Windows. |
| целевая платформа | Всеобщий |
| заголовка | rxprocs.h (include FltKernel.h, Ntifs.h) |
| библиотеки | NtosKrnl.lib |
| DLL | NtosKrnl.exe |
| IRQL | <= APC_LEVEL |
См. также
FSCTL_OPBATCH_ACK_CLOSE_PENDING