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 状态值 (OplockBlockState、 OplockAppState 和 OplockFinalState) 与 oplock 中断逻辑一起使用,用于 SMB 和 SMB2 的系统管理。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 此结构从 Windows 7 开始可用。 |
标头 | ntifs.h (包括 Ntifs.h) |