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


структура 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

Логическое значение, указывающее, является ли операция открытия файла последней операцией открытия файла для запроса oplock. 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 присутствует только в том случае, если версии = SRV_OPEN_ECP_CONTEXT_VERSION_2.

Замечания

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

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

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Эта структура доступна начиная с Windows 7.
заголовка ntifs.h (include Ntifs.h)

См. также

SOCKADDR_STORAGE

SRV_INSTANCE_TYPE

UNICODE_STRING