系统定义的 ECP

此页面列出并介绍了系统定义的额外创建参数, (ECP) 。 操作系统在 Ntifs.h 头文件中定义这些 ECP。

这些系统定义的 ECP 会将指定的额外信息附加到文件中 的IRP_MJ_CREATE 操作。 文件系统堆栈的元素可以查询 ECP 以获取额外信息。

通常,处理文件的 IRP_MJ_CREATE操作的 筛选器,然后将文件向下传递到下面的筛选器,不得将任何系统定义的 ECP 附加到该文件上的 IRP_MJ_CREATE 操作。

同样,处理和发出 文件IRP_MJ_CREATE操作的 内核模式驱动程序不得将任何系统定义的 ECP 附加到文件 上的IRP_MJ_CREATE 操作。

筛选器驱动程序应将系统定义的 ECP 视为只读。 应使用它们来仅检索信息。

限制筛选器驱动程序附加以下任何系统定义的 ECP 的一个例外是筛选器驱动程序实现分层文件系统。 它通过拥有文件对象以及在其筛选器下方的文件上发出自己的 IRP_MJ_CREATE 操作,以响应筛选器驱动程序在其自己的文件对象上服务的文件上的 IRP_MJ_CREATE 操作。 此类筛选器驱动程序应将文件上原始IRP_MJ_CREATE操作的任何ECP_LIST上下文结构列表传播到筛选器驱动程序下面发出IRP_MJ_CREATE操作。 通过传播这些 ECP 列表,筛选器驱动程序可确保在发出 IRP_MJ_CREATE 操作的筛选器下方的任何筛选器都知道原始 IRP_MJ_CREATE 操作的上下文。

ECP GUID ECP 上下文结构和含义
ECP_TYPE_CLFS_CREATE_CONTAINER 用于标识 CREATE_REDIRECTION_ECP_CONTEXT ECP 上下文结构的 GUID。 可以将此 ECP 发送到 NTFS,以在卷装载期间插入新的通用日志文件系统 (CLFS) 容器。
ECP_TYPE_IO_STOP_ON_SYMLINK_FILTER_GUID 标识 IO_STOP_ON_SYMLINK_FILTER_ECP_v0 ECP 上下文结构的 GUID。 此 ECP 将IO_STOP_ON_SYMLINK的行为限制为仅对指定的重分析标记执行操作。
ECP_TYPE_OPEN_REPARSE_GUID 标识 OPEN_REPARSE_LIST ECP 上下文结构的 GUID。 此 ECP 支持调用方打开特定的重新分析点,而不会抑制所有重新分析点类的重新分析行为。
GUID_ECP_ATOMIC_CREATE 标识 ATOMIC_CREATE_ECP_CONTEXT ECP 上下文结构的 GUID。 此 ECP 允许在创建过程中以原子方式对文件执行某些补充操作。
GUID_ECP_CLOUDFILES_ATTRIBUTION 用于标识云文件属性的 ECP 的 GUID。
GUID_ECP_CREATE_REDIRECTION 用于标识可以发送到查询文件的重定向状态的 ECP 的 GUID,以查询特定创建操作的文件的重定向状态。
GUID_ECP_CSV_DOWN_LEVEL_OPEN 标识 CSV_DOWN_LEVEL_OPEN_ECP_CONTEXT ECP 上下文结构的 GUID。 此 ECP 由群集共享卷文件系统 (CSVFS) 发送到元数据节点 (MDS) ,并包含有关创建类型的信息。
GUID_ECP_CSV_QUERY_FILE_REVISION 标识 CSV_QUERY_FILE_REVISION_ECP_CONTEXT ECP 上下文结构的 GUID。 可以将此 ECP 发送到 CSVFS 以请求文件修订号。
GUID_ECP_CSV_QUERY_FILE_REVISION_FILE_ID_128 标识 CSV_QUERY_FILE_REVISION_ECP_CONTEXT_FILE_ID_128 ECP 上下文结构的 GUID。 可以将此 ECP 发送到 CSVFS 以请求文件修订号。
GUID_ECP_CSV_SET_HANDLE_PROPERTIES 标识 CSV_SET_HANDLE_PROPERTIES_ECP_CONTEXT ECP 上下文结构的 GUID。 可以将此 ECP 发送到 CSVFS,以设置如何处理到达此打开的 IO 的属性。
GUID_ECP_DUAL_OPLOCK_KEY 标识 DUAL OPLOCK_KEY_ECP_CONTEXT ECP 上下文结构的 GUID。 与 OPLOCK_KEY_ECP_CONTEXT 结构一样, DUAL OPLOCK_KEY_ECP_CONTEXT 用于将 oplock 密钥附加到打开的文件请求。 借助 DUAL OPLOCK_KEY_ECP_CONTEXT,还可以将父密钥设置为为目标文件的目录提供 oplock。
GUID_ECP_IO_DEVICE_HINT 标识 IO_DEVICE_HINT_ECP_CONTEXT 结构的 GUID。 设备提示用于协助名称提供程序微型筛选器驱动程序跟踪新设备的重新分析目标。
GUID_ECP_NETWORK_APP_INSTANCE 标识 NETWORK_APP_INSTANCE_ECP_CONTEXT ECP 上下文结构的 GUID。 故障转移群集中的客户端应用程序可能在群集的节点上打开一组文件。 文件对象由 NETWORK_APP_INSTANCE_ECP_CONTEXT 结构中的实例标识符标记到应用程序。 故障转移时,辅助节点可以使用以前缓存的应用程序实例标识符验证客户端应用程序对打开的文件的访问权限。
GUID_ECP_NETWORK_APP_INSTANCE_VERSION 标识 NETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT 结构的 GUID,它是应用程序提供其实例 ID 的 ECP 上下文。 此 ECP 必须随附 NETWORK_APP_INSTANCE_ECP_CONTEXT (GUID_ECP_NETWORK_APP_INSTANCE) 才能有效。
GUID_ECP_NETWORK_OPEN_CONTEXT 标识 NETWORK_OPEN_ECP_CONTEXT ECP 上下文结构的 GUID,用于附加网络重定向程序的额外信息。 此 GUID 还标识 Windows 7 及更高版本 Windows 上运行的驱动程序 的NETWORK_OPEN_ECP_CONTEXT_V0 结构,并且必须解释驻留在 Windows Vista 上的文件上的网络 ECP 上下文。
GUID_ECP_NFS_OPEN 标识 NFS_OPEN_ECP_CONTEXT 结构的 GUID。 网络文件系统 (NFS) 服务器将NFS_OPEN_ECP_CONTEXT结构附加到打开的文件请求。 NFS 服务器在 NFS 服务器发出的任何打开的文件请求上使用此 GUID 来满足客户端请求。 然后,文件系统堆栈可以确定是否将NFS_OPEN_ECP_CONTEXT附加到打开的文件请求。 根据NFS_OPEN_ECP_CONTEXT文件系统堆栈中的信息,可以确定请求打开该文件的客户端以及原因。
GUID_ECP_OPEN_PARAMETERS 标识 ECP_OPEN_PARAMETERS ECP 上下文结构的 GUID。 此 ECP 允许调用方指定文件打开的目的,而不会干扰文件上现有的句柄和/或机会锁 (操作锁) 。
GUID_ECP_OPLOCK_KEY 标识 OPLOCK_KEY_ECP_CONTEXT ECP 上下文结构的 GUID,用于将 oplock 密钥附加到打开的文件请求。 oplock 密钥允许应用程序打开同一流的多个句柄,而不会中断应用程序自己的 oplock。 有关 oplock 和 oplock 密钥的详细信息,请参阅 Oplock 语义概述
GUID_ECP_PREFETCH_OPEN 标识 PREFETCH_OPEN_ECP_CONTEXT ECP 上下文结构的 GUID。 预提取器是操作系统的一个组件,它与缓存管理器和内存管理器紧密集成,使磁盘访问更高效,从而提高性能。 如果其他组件干扰预提取器,则系统性能会降低,并可能会死锁。 因此,预提取程序会将PREFETCH_OPEN_ECP_CONTEXT结构附加到文件,以便预提取程序对该文件执行打开的请求。 此打开的请求由PREFETCH_OPEN_ECP_CONTEXT的 Context 成员指定。 其他组件(例如文件系统筛选器驱动程序)可以确定PREFETCH_OPEN_ECP_CONTEXT是否已附加到该文件,然后采取适当的操作。
GUID_ECP_QUERY_ON_CREATE 用于标识 ECP 的 GUID,用于在创建时查询文件信息。
GUID_ECP_RKF_BYPASS 标识 RKF_BYPASS_ECP_CONTEXT ECP 上下文结构的 GUID。
GUID_ECP_SRV_OPEN 标识 SRV_OPEN_ECP_CONTEXT ECP 上下文结构的 GUID。 服务器将SRV_OPEN_ECP_CONTEXT结构附加到打开的文件请求。 服务器在服务器发出的任何打开的文件请求上使用此 GUID 来满足条件客户端请求。 然后,文件系统堆栈可以确定是否将SRV_OPEN_ECP_CONTEXT附加到打开的文件请求。 根据SRV_OPEN_ECP_CONTEXT文件系统堆栈中的信息,可以确定请求打开该文件的客户端以及原因。