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