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


структура OPLOCK_KEY_ECP_CONTEXT (ntifs.h)

Структура OPLOCK_KEY_ECP_CONTEXT используется для подключения ключа oplock к файлу. Эта структура устарела для Windows 8 и более поздних версий; Вместо этого фильтры должны использовать DUAL_OP_LOCK_KEY_ECP_CONTEXT.

Синтаксис

typedef struct _OPLOCK_KEY_ECP_CONTEXT {
  GUID  OplockKey;
  ULONG Reserved;
} OPLOCK_KEY_ECP_CONTEXT, *POPLOCK_KEY_ECP_CONTEXT;

Члены

OplockKey

GUID для ключа oplock. Этот GUID используется для разных дескрипторов и определяет их как принадлежащий одному кэшу клиента. Если два дескриптора совместно используют один и тот же ключ oplock, запрос, выполняемый на одном дескрипторе, не будет прерывать выдающийся оплок на другом дескрипторе.

Reserved

Скрытный. Должно быть задано равно нулю.

Замечания

Сведения об использовании ECP для связывания дополнительных сведений с файлом при создании файла см. в разделе Использование дополнительных параметров создания с IRP_MJ_CREATE операцией.

Минифильтр не должен изменять содержимое структуры OPLOCK_KEY_ECP_CONTEXT, когда она видит, что ECP выходит из выше. Его следует использовать для получения сведений только о ключе oplock. Дополнительные сведения об этой проблеме см. в System-DefinedECP.

Ключ оплока позволяет приложению открывать несколько дескрипторов в одном потоке без нарушения собственного оплока приложения. Разрыв блокировки происходит только после того, как приложение получает нарушение общего доступа (STATUS_SHARING_VIOLATION).

При открытии потока оплоки предоставляются дескрипторы потоков. Такой дескриптор потока может быть связан с ключом oplock. Вызывающий объект может явно предоставить ключ оплока подпрограмме IoCreateFileEx для создания дескриптора потока. Если вызывающий объект явно не задает ключ oplock при создании дескриптора, операционная система обрабатывает дескриптор как уникальный ключ oplock, связанный с дескриптором, чтобы ключ дескриптора отличался от любого другого ключа на любом другом дескрипторов. Если операция с файлом получается на дескриптор, отличный от того, на котором была предоставлена операция, и ключ oplock, связанный с дескриптором оплока, отличается от ключа, связанного с дескриптором операции, и эта операция несовместима с предоставленным в данный момент оплоком, то эта операция сломается. Оплок прерывается, даже если это тот же процесс или поток, выполняющий несовместимую операцию. Например, если процесс открывает поток, для которого предоставляется монопольная блокировка, и тот же процесс снова открывает тот же поток, используя другой (или нет) ключ оплока, монопольный оплок немедленно разбивается.

Ключи oplock связаны с дескрипторами при создании дескрипторов. Можно связать дескриптор с ключом oplock, даже если не предоставляются операции.

Дополнительные сведения о клавишах oplock и oplock см. в семантики Oplock.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 7; устаревшее начиная с Windows 8
заголовка ntifs.h

См. также

DUAL_OP_LOCK_KEY_ECP_CONTEXT

IoCreateFileEx