Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
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 |