Функция FsRtlUpperOplockFsctrl (ntifs.h)
FsRtlUpperOplockFsctrl процедурных процессов оппортунистической блокировки (oplock) запросов и подтверждения для вторичных или многоуровневых файловых систем. Верхняя файловая система отправляет состояние оплока, удерживаемого в нижней файловой системе. FsRtlUpperOplockFsctrl определит, следует ли предоставить или запретить верхнюю файловую систему oplock.
Синтаксис
NTSTATUS FsRtlUpperOplockFsctrl(
[in] POPLOCK Oplock,
[in] PIRP Irp,
[in] ULONG OpenCount,
[in] ULONG LowerOplockState,
[in] ULONG Flags
);
Параметры
[in] Oplock
Непрозрачный указатель на оплок для файла. Этот указатель должен быть инициализирован предыдущим вызовом FsRtlInitializeOplock.
[in] Irp
Указатель на IRP для операции ввода-вывода.
[in] OpenCount
Количество пользовательских дескрипторов для файла, если запрашивается монопольная блокировка. Задание ненулевого значения для запроса oplock уровня 2, R или RH указывает на наличие блокировок диапазона байтов в файле. Дополнительные сведения о типах oplock см. в типах oplocks.
[in] LowerOplockState
Значение нижнего уровня оплока, удерживаемого верхней файловой системой. Это битовая комбинация OR следующего вида:
Ценность | Значение |
---|---|
OPLOCK_LEVEL_CACHE_READ | Указывает тип oplock Read (R). |
OPLOCK_LEVEL_CACHE_WRITE | Указывает тип операции записи (W). |
OPLOCK_LEVEL_CACHE_HANDLE | Указывает тип дескриптора oplock (H). |
[in] Flags
Битовая маска для связанных операций oplock. Файловая система или драйвер фильтра задает биты, чтобы указать поведение FsRtlUpperOplockFsctrl. Параметр флагов
Ценность | Значение |
---|---|
OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH (0x00000001) | Файловая система проверила, что все ключи oplock в любом открытом дескрипторе соответствуют. Указав этот флаг, вы разрешаете пакету oplock предоставлять оплок уровня RW или RWH, если существует несколько открытых дескрипторов для файла. |
Возвращаемое значение
FsRtlUpperOplockFsctrl возвращает одно из следующих значений NTSTATUS:
Возвращаемый код | Описание |
---|---|
STATUS_SUCCESS | Для запроса IRP_MJ_CREATE STATUS_SUCCESS указывает, что запрошенная блокировка фильтра оппортунистическая блокировка (oplock) была предоставлена. Для операции FSCTL значение STATUS_SUCCESS зависит от кода FSCTL. Дополнительные сведения см. в разделе "Замечания" FsRtlOplockFsctrlEx. |
STATUS_CANCELLED | Операция ввода-вывода отменена. STATUS_CANCELLED — это код ошибки. |
STATUS_INVALID_PARAMETER | Код FSCTL для операции ввода-вывода не был допустимым запросом на оплок значений. Допустимые типы запросов перечислены в разделе "Примечания" FsRtlOplockFsctrlEx. STATUS_INVALID_PARAMETER — это код ошибки. |
STATUS_OPLOCK_NOT_GRANTED | Не удалось предоставить оплок. Уровень запрошенной верхней файловой системы недействителен для оплока, предоставленного для нижней файловой системы. STATUS_OPLOCK_NOT_GRANTED — это код ошибки. |
STATUS_PENDING | Используется только для операций FSCTL. Значение STATUS_PENDING зависит от кода FSCTL. Дополнительные сведения см. в разделе "Замечания" FsRtlOplockFsctrlEx. STATUS_PENDING — это код успешного выполнения. |
STATUS_CANNOT_GRANT_REQUESTED_OPLOCK | Подтверждение оплока для нового оплока не допускается. Уровень верхней файловой системы блокировки недопустим для нижней файловой системы. |
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 8.1 |
целевая платформа | Всеобщий |
заголовка | ntifs.h (include Ntifs.h) |
библиотеки |
NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | IRQL <= APC_LEVEL |