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) 服务器是否阻止正在等待 oplock 中断的打开线程。 TRUE 指示打开的线程处于阻塞状态,否则为 FALSE

OplockAppState

一个布尔值,指示 SMB 服务器是否使用当前打开的线程请求 oplock。 设置为 TRUE 以请求 oplock,否则设置为 FALSE

OplockFinalState

一个布尔值,指示文件打开操作是否是请求 oplock 的最终文件打开操作。 TRUE 表示获取 oplock 的最终文件打开操作, FALSE 指示否则。

Version

此结构的版本。 此成员已添加到 Windows 10 版本 1703 中,因此在尝试访问它之前,必须先检查以查看它是否存在。 如果结构大小为 >= RTL_SIZEOF_THROUGH_FIELD (SRV_OPEN_ECP_CONTEXT 版本) ,则可以访问此字段。 此成员当前可设置为 SRV_OPEN_ECP_CONTEXT_VERSION_2。

InstanceType

开放源SRV_INSTANCE_TYPE。 附加到 CSVFS 使用的 NTFS 或 ReFS 的文件系统微筛选器可以使用此字段来检测此打开是否绕过 CSVFS。 如果打开通过 CSVFS,则此 ECP 不存在或实例类型为 SrvInstanceTypeCsv。 如果打开时绕过 CSVFS 并直接转到隐藏卷,则 InstanceType 为 SrvInstanceTypePrimary。 仅当 Version = >SRV_OPEN_ECP_CONTEXT_VERSION_2 时,InstanceType 字段才存在。

注解

文件系统堆栈可以确定是否SRV_OPEN_ECP_CONTEXT附加到创建文件请求。 然后,文件系统堆栈可以使用 SRV_OPEN_ECP_CONTEXT 中的信息来确定哪个客户端请求打开该文件,以及它请求该文件的原因。 有关如何检索SRV_OPEN_ECP_CONTEXT附加到创建文件请求的额外信息的信息,请参阅 检索 ECP

SRV_OPEN_ECP_CONTEXT结构为只读。 应使用它来检索有关服务器打开 ECP 的信息。 有关此问题的详细信息,请参阅 系统定义的 ECP

oplock 状态值 (OplockBlockStateOplockAppStateOplockFinalState) 与 oplock 中断逻辑一起使用,用于 SMB 和 SMB2 的系统管理。

要求

要求
最低受支持的客户端 此结构从 Windows 7 开始可用。
标头 ntifs.h (包括 Ntifs.h)

另请参阅

SOCKADDR_STORAGE

SRV_INSTANCE_TYPE

UNICODE_STRING