Код элемента управления 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_PARAMETERS для IRP_MJ_FILE_SYSTEM_CONTROL