код элемента управления FSCTL_OPLOCK_BREAK_NOTIFY
Код FSCTL_OPLOCK_BREAK_NOTIFY управления позволяет вызывающей приложению ждать завершения оппортунистической блокировки (oplock).
Эта операция полезна только для прерывания блокировки, который уже был инициирован при открытии дескриптора вызывающего объекта. Дескриптор должен быть открыт с помощью FILE_COMPLETE_IF_OPLOCKED. Эта операция не имеет смысла, если в настоящее время выполняется блокировка, а разрыв операции не начался.
Для обработки этого кода элемента управления мини-фильтр вызывает FltOplockFsctrl со следующими параметрами. Драйвер файловой системы или устаревшего фильтра вызывает FsRtlOplockFsctrl.
Дополнительные сведения о оппортунистических блокировках и коде элемента управления FSCTL_OPLOCK_BREAK_NOTIFY см. в документации по Microsoft Windows SDK.
Параметры
Oplock: указатель непрозрачного объекта oplock для файла.
CallbackData: только FltOplockFsctrl . Структура данных обратного вызова (FLT_CALLBACK_DATA) для запроса FSCTL IRP_MJ_FILE_SYSTEM_CONTROL. Параметр FsControlCode для операции должен быть FSCTL_OPLOCK_BREAK_NOTIFY.
Irp: только FsRtlOplockFsctrl . IRP для IRP_MJ_FILE_SYSTEM_CONTROL запроса FSCTL. Параметр FsControlCode для операции должен быть FSCTL_OPLOCK_BREAK_NOTIFY.
OpenCount: не используется с этой операцией; Значение равно нулю.
Блок состояния
FltOplockFsctrl возвращает FLT_PREOP_PENDING, если прерывание операции выполняется, и IRP будет завершен после завершения прерывания операции. (В этом случае IRP в конечном итоге может завершиться с помощью STATUS_SUCCESS или STATUS_CANCELLED.) В противном случае Функция FltOplockFsctrl возвращает FLT_PREOP_COMPLETE.
FsRtlOplockFsctrl возвращает одно из следующих значений NTSTATUS для этой операции:
Код | Значение |
---|---|
STATUS_SUCCESS | Не было облокировано этим дескриптором, или oplock удерживается и oplock разрыв не начался. |
STATUS_INVALID_OPLOCK_PROTOCOL | IRP была отменена до завершения операции FSCTL_OPLOCK_BREAK_NOTIFY. |
STATUS_PENDING | Разрыв oplock в настоящее время. IRP будет завершен после завершения разрыва блокировки. В конечном итоге IRP можно завершить с помощью STATUS_SUCCESS или STATUS_CANCELLED. Это код успешного выполнения. |
Требования
Тип требования | Требование |
---|---|
Заголовок | Ntifs.h (включая Ntifs.h или Fltkernel.h) |
См. также раздел
FLT_PARAMETERS для IRP_MJ_FILE_SYSTEM_CONTROL
FSCTL_OPBATCH_ACK_CLOSE_PENDING