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

Структура OPLOCK_KEY_ECP_CONTEXT используется для присоединения ключа блокировки к файлу. Эта структура устарела для 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 совместно используется различными дескрипторами и определяет их как принадлежащие одному кэшу клиента. Если два дескриптора совместно используют один и тот же ключ блокировки, запрос, выполненный на одном дескрипторе, не приведет к разрыву незаблокировки другого дескриптора.

Reserved

Зарезервировано. Необходимо задать нулевое значение.

Комментарии

Сведения о том, как использовать ecp для связывания дополнительных сведений с файлом при создании файла, см. в статье Использование дополнительных параметров создания с помощью операции IRP_MJ_CREATE.

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

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

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

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

Дополнительные сведения о блокировках и ключах блокировки см. в разделе Обзор семантики Oplock.

Требования

Требование Значение
Минимальная версия клиента Windows 7; устаревшее начиная с Windows 8
Верхняя часть ntifs.h

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

DUAL_OP_LOCK_KEY_ECP_CONTEXT

IoCreateFileEx