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


код элемента управления FSCTL_REQUEST_OPLOCK

Код элемента управления FSCTL_REQUEST_OPLOCK запрашивает оппортунистическую блокировку (oplock) для файла или подтверждает, что произошел разрыв операции.

Дополнительные сведения об оппортунистических блокировках см. в разделе Оппортунистические блокировки в документации по рабочему столу Windows. Дополнительные сведения об элементах управления OPLOCK в пользовательском режиме см. в разделе Коды элементов управления файлами в документации windows Desktop.

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

Параметры

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

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

  • OpenCount: количество пользовательских дескрипторов для файла, если запрос предназначен для монопольной блокировки операции. Если запрос предназначен для блокировки операции, которую можно совместно использовать, Значение OpenCount равно нулю, если в файле не существует блокировок диапазона байтов. В противном случае Значение OpenCount не равно нулю. Вызывающий объект может вызвать подпрограмму FsRtlOplockIsSharedRequest в IRP, чтобы определить, является ли запрос для oplock, который можно совместно использовать.

  • Флаги: битовая маска для связанных операций oplock. Драйвер файловой системы или фильтра задает биты для указания поведения FsRtlOplockFsctrlEx. Параметр Flags имеет следующие параметры:

    Значение Значение
    OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH (0x00000001) Указывает, что файловая система проверила соответствие всех оппортунистических ключей блокировки на любом открытом в данный момент дескрипторе. Указав этот флаг, пакет oplock может предоставить oplock уровня RW или RWH, если существует несколько открытых дескрипторов для файла. Дополнительные сведения о типах oplock см. в разделе Обзор.

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

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

Код Значение
STATUS_PENDING Операция была предоставлена. Это код успешного выполнения.
STATUS_CANCELLED IRP была отменена до завершения операции FSCTL_REQUEST_OPLOCK. Это код ошибки.
STATUS_OPLOCK_NOT_GRANTED Не удалось предоставить облокировку. Это код ошибки.

Требования

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

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

FsRtlOplockFsctrlEx

FsRtlOplockIsSharedRequest

IRP_MJ_FILE_SYSTEM_CONTROL