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。 仅当 版本 为 >= 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 的信息。 有关此问题的详细信息,请参阅 System-Defined ECP。
oplock 状态值(OplockBlockState、OplockAppState和 OplockFinalState)用于 SMB 和 SMB2 的系统管理操作锁中断逻辑。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 此结构从 Windows 7 开始可用。 |
标头 | ntifs.h (include Ntifs.h) |