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

Структура SRV_OPEN_ECP_CONTEXT используется сервером для условного открытия файлов в ответ на запросы клиента.

Синтаксис

typedef struct _SRV_OPEN_ECP_CONTEXT {
  PUNICODE_STRING       ShareName;
  PSOCKADDR_STORAGE_NFS SocketAddress;
  BOOLEAN               OplockBlockState;
  BOOLEAN               OplockAppState;
  BOOLEAN               OplockFinalState;
  USHORT                Version;
  SRV_INSTANCE_TYPE     InstanceType;
} SRV_OPEN_ECP_CONTEXT, *PSRV_OPEN_ECP_CONTEXT;

Члены

ShareName

Указатель на структуру UNICODE_STRING , которая предоставляет имя общей папки для сервера, содержащего открытые файлы. Это поле является необязательным и может иметь значение NULL.

SocketAddress

Указатель на структуру SOCKADDR_STORAGE , указывающую транспортный адрес клиентского компьютера. Этот клиент отправляет запрос на открытие файла. Это поле является необязательным и может иметь значение NULL.

OplockBlockState

Логическое значение, указывающее, блокирует ли сервер SMB открытый поток, ожидающий разрыва блокировки. Значение TRUE указывает, что открытый поток находится в состоянии блокировки, а в противном случае — false .

OplockAppState

Логическое значение, указывающее, запрашивает ли сервер SMB блокировку с текущим открытым потоком. Задайте значение TRUE , чтобы запросить блокировку, а в противном случае — значение FALSE .

OplockFinalState

Логическое значение, указывающее, является ли операция открытия файла последней операцией открытия файла для запроса блокировки. ЗНАЧЕНИЕ TRUE указывает на окончательную операцию открытия файла для получения блокировки, а ЗНАЧЕНИЕ FALSE указывает на обратное.

Version

Версия этой структуры. Этот элемент был добавлен в Windows 10 версии 1703, поэтому перед попыткой доступа к нему необходимо сначала проверка, чтобы узнать, существует ли он. Если размер структуры = >RTL_SIZEOF_THROUGH_FIELD(SRV_OPEN_ECP_CONTEXT, версия), вы можете получить доступ к этому полю. В настоящее время для этого элемента можно задать значение SRV_OPEN_ECP_CONTEXT_VERSION_2.

InstanceType

SRV_INSTANCE_TYPE, откуда исходит открытие. Минифильтры файловой системы, которые присоединяются к NTFS или ReFS, используемым CSVFS, могут использовать это поле, чтобы определить, не обходит ли этот открытый ФАЙЛ CSVFS. Если открытый файл проходит через CSVFS, то этот ECP либо отсутствует, либо тип экземпляра — SrvInstanceTypeCsv. Если открытый файл обходит CSVFS и переходит непосредственно к скрытому тому, то InstanceType имеет значение SrvInstanceTypePrimary. Поле InstanceType отображается только в том случае , если version имеет >значение = SRV_OPEN_ECP_CONTEXT_VERSION_2.

Комментарии

Стек файловой системы может определить, присоединена ли SRV_OPEN_ECP_CONTEXT к запросу на создание файла. Затем стек файловой системы может использовать сведения из SRV_OPEN_ECP_CONTEXT, чтобы определить, какой клиент запросил открытие файла и почему он запросил его. Дополнительные сведения о том, как получить SRV_OPEN_ECP_CONTEXT дополнительные сведения, прикрепленные к запросу на создание файла, см. в разделе Получение ESP.

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

Значения состояния oplock (OplockBlockState, OplockAppState и OplockFinalState) используются с логикой прерывания операции для управления системой для SMB и SMB2.

Требования

Требование Значение
Минимальная версия клиента Эта структура доступна начиная с Windows 7.
Верхняя часть ntifs.h (включая Ntifs.h)

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

SOCKADDR_STORAGE

SRV_INSTANCE_TYPE

UNICODE_STRING