Поделиться через


Код элемента управления FSCTL_OPBATCH_ACK_CLOSE_PENDING

Код элемента управления FSCTL_OPBATCH_ACK_CLOSE_PENDING реагирует на уведомление о том, что монопольная (уровень 1, пакет или фильтр) оппортунистическая блокировка (блокировка) для файла была нарушена. Клиентское приложение отправляет этот код элемента управления, чтобы указать, что оно подтверждает разрыв блокировки и закрывает дескриптор файла.

Для прерывания блокировки пакета или фильтра вызывающий объект должен закрыть дескриптор файла после отправки этого кода элемента управления. В противном случае система будет блокировать ожидание закрытия дескриптора файла.

Этот код элемента управления не предназначен для использования с блокировками уровня 1. Тем не менее, для блокировки уровня 1 система рассматривает этот код управления как полное подтверждение разрыва, и вызывающий объект не требуется закрывать дескриптор файла.

Этот код элемента управления используется редко. Когда клиентское приложение получает уведомление о разрыве блокировки для файла и закрывает его дескриптор для файла, система рассматривает дескриптор файла близко как полное подтверждение разрыва блокировки. Поэтому никогда не нужно отправлять этот код элемента управления.

Для обработки этого кода элемента управления минифильтр вызывает FltOplockFsctrl со следующими параметрами. Файловая система или устаревший драйвер фильтра вызывает FsRtlOplockFsctrl.

Дополнительные сведения о оппортунистической блокировке и коде элемента управления FSCTL_OPBATCH_ACK_CLOSE_PENDING см. в документации по Microsoft Windows SDK.

Параметры

  • Oplock: указатель непрозрачного объекта oplock для файла.

  • CallbackData: только FltOplockFsctrl . Структура данных обратного вызова (FLT_CALLBACK_DATA) для запроса FSCTL IRP_MJ_FILE_SYSTEM_CONTROL. Параметр FsControlCode для операции должен быть FSCTL_OPBATCH_ACK_CLOSE_PENDING.

  • Irp: только FsRtlOplockFsctrl . IRP для запроса FSCTL IRP_MJ_FILE_SYSTEM_CONTROL. Параметр FsControlCode для операции должен быть FSCTL_OPBATCH_ACK_CLOSE_PENDING.

  • OpenCount: не используется с этой операцией; Значение равно нулю.

Блок состояния

FltOplockFsctrl всегда возвращает FLT_PREOP_COMPLETE для этой операции.

FsRtlOplockFsctrl возвращает одно из следующих значений NTSTATUS для этой операции:

Код Значение
STATUS_SUCCESS Блокировка, удерживаемая этой ручкой, находилась в процессе слома.
STATUS_INVALID_OPLOCK_PROTOCOL Этот дескриптор не удерживал ни разблокировки, либо разрыв блокировки в настоящее время не выполняется. Это код ошибки.

Требования

Тип требования Требование
Заголовок Ntifs.h (включая Ntifs.h или Fltkernel.h)

См. также раздел

FLT_CALLBACK_DATA

FLT_PARAMETERS для IRP_MJ_FILE_SYSTEM_CONTROL

FltOplockFsctrl

FSCTL_OPLOCK_BREAK_ACK_NO_2

FSCTL_OPLOCK_BREAK_ACKNOWLEDGE

FSCTL_OPLOCK_BREAK_NOTIFY

FSCTL_REQUEST_BATCH_OPLOCK

FSCTL_REQUEST_FILTER_OPLOCK

FSCTL_REQUEST_OPLOCK_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FsRtlOplockFsctrl

IRP_MJ_FILE_SYSTEM_CONTROL