структура 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 к запросу на создание файла. Затем стек файловой системы может использовать сведения в 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) |