CSV_CONTROL_OP枚举 (ntifs.h)
指定要用于 FSCTL_CSV_CONTROL 控制代码的群集共享卷(CSV)控制作的类型。
语法
typedef enum _CSV_CONTROL_OP {
CsvControlStartRedirectFile = 0x02,
CsvControlStopRedirectFile = 0x03,
CsvControlQueryRedirectState = 0x04,
CsvControlQueryFileRevision = 0x06,
CsvControlQueryMdsPath = 0x08,
CsvControlQueryFileRevisionFileId128 = 0x09,
CsvControlQueryVolumeRedirectState = 0x0a,
CsvControlEnableUSNRangeModificationTracking = 0x0d,
CsvControlMarkHandleLocalVolumeMount = 0x0e,
CsvControlUnmarkHandleLocalVolumeMount = 0x0f,
CsvControlGetCsvFsMdsPathV2 = 0x12,
CsvControlDisableCaching = 0x13,
CsvControlEnableCaching = 0x14,
CsvControlStartForceDFO = 0x15,
CsvControlStopForceDFO = 0x16,
CsvControlQueryMdsPathNoPause = 0x17,
CsvControlSetVolumeId = 0x18,
CsvControlQueryVolumeId = 0x19
} CSV_CONTROL_OP, *PCSV_CONTROL_OP;
常数
CsvControlStartRedirectFile 值:0x02 启动 CSV 文件重定向。 |
CsvControlStopRedirectFile 值:0x03 停止 CSV 文件重定向。 |
CsvControlQueryRedirectState 值:0x04 搜索状态重定向。 指定此值时,还必须使用 CSV_QUERY_REDIRECT_STATE 结构。 |
CsvControlQueryFileRevision 值:0x06 搜索文件修订。 指定此值时,还必须使用 CSV_QUERY_FILE_REVISION 结构。 |
CsvControlQueryMdsPath 值:0x08 搜索 MDS 路径。 指定此值时,还必须使用 CSV_QUERY_MDS_PATH 结构。 |
CsvControlQueryFileRevisionFileId128 值:0x09 搜索 128 位文件修订。 指定此值时,还必须使用CSV_QUERY_FILE_REVISION_FILE_ID_128结构。 |
CsvControlQueryVolumeRedirectState 值:0x0a 搜索卷状态重定向。 指定此值时,还必须使用CSV_QUERY_VOLUME_REDIRECT_STATE结构。 |
CsvControlEnableUSNRangeModificationTracking 值:0x0d 启用 USN 范围跟踪。 |
CsvControlMarkHandleLocalVolumeMount 值:0x0e 当 VHD 文件即将装载环回时,如果 I/O 未取得进展,则标记 CVSFS 失败的句柄和请求,并在短超时(当前为 20 秒)后使句柄失效。 |
CsvControlUnmarkHandleLocalVolumeMount 值:0x0f 当 VHD 文件即将卸载环回时,取消标记以前由 CsvControlMarkHandleLocalVolumeMount标记的句柄。 |
CsvControlGetCsvFsMdsPathV2 值:0x12 搜索 MDS 路径的版本 2。 指定此值时,还必须使用CSV_QUERY_MDS_PATH_V2结构。 |
CsvControlDisableCaching 值:0x13 禁用 CSV 文件的缓存。 |
CsvControlEnableCaching 值:0x14 启用 CSV 文件的缓存。 |
CsvControlStartForceDFO 值:0x15 强制 CSVFS 在下层文件对象(DFO)上开始转发 I/O 下层。 有关详细信息,请参阅“备注”。 |
CsvControlStopForceDFO 值:0x16 停止强制 CSVFS 在 DFO 上转发 I/O。 有关详细信息,请参阅“备注”。 |
CsvControlQueryMdsPathNoPause 值:0x17 类似于 CsvControlQueryMdsPath。 搜索 MDS 路径,但如果 CSV 卷在请求结束时暂停,请将 MdsNodeId 设置为0xFFFFFFFF,而不是返回最后一个协调节点。 这允许客户端检测到协调节点可能正在更改。 指定 CsvControlQueryMdsPathNoPause 时,还必须使用 CSV_QUERY_MDS_PATH 结构。 |
CsvControlSetVolumeId 值:0x18 设置 CSV 卷 GUID。 有关详细信息,请参阅“备注”。 |
CsvControlQueryVolumeId 值:0x19 查询 CSV 卷 GUID 是否可用。 有关详细信息,请参阅“备注”。 |
言论
使用此枚举调用 FSCTL_CSV_CONTROL 控件代码的替代方法是使用封装此枚举类型的成员 CSV_CONTROL_PARAM 结构。
CsvControlStartForceDFO 和 CsvControlStopForceDFO
在 CSVFS 上打开文件对象时,CSVFS 将在下层文件系统(NTFS 或 REFS)上打开与每个用户打开的下层文件对象(DFO)。 该文件对象作为在 CSVFS 上打开文件的应用程序的一部分打开,当应用程序关闭 CSVFS 上的文件对象的句柄时关闭。 在内部,CSVFS 将打开一个名为分页文件对象(PFO)的其他文件对象,该对象在 CSVFS 上共享同一文件的所有打开之间。 默认情况下,CSVFS 将其用于许多作,例如:
- Oplock 协商
- 字节范围锁
- 分页 I/O 的转发
某些筛选解决方案可能会以特殊方式标记句柄,然后预期所有读取和写入都应由匹配 DFO 上的 CSVFS 下级转发。 应用程序可以通过发送 CsvControlStartForceDFO,强制 CSVFS 开始在 DFO 上转发 IO 下层。 稍后,应用程序可以使用 CsvControlStopForceDFO 还原为默认行为。 关闭用于发送 CsvControlStartForceDFO 的句柄将隐式恢复,就像应用程序发送 CsvControlStopForceDFO一样。
CsvControlSetVolumeId 和 CsvControlQueryVolumeId
这些控件允许附加到 CSVFS 以下下层文件系统的文件系统微型筛选器来了解 CSV 卷 GUID。 群集物理磁盘资源在装载下层文件系统后设置此 GUID,以便在装载期间筛选器附加时不可用。 在筛选器附加期间,文件系统微型筛选器可以发出 CsvControlQueryVolumeId 来查询 GUID 是否已可用。 必须将控件发送到堆栈顶部,以确保 csvflt 接收它。 如果卷 GUID 尚不可用,csvflt 将返回STATUS_UNSUCCESSFUL。 如果卷 GUID 尚不可用,筛选器不应无法附加。
稍后,物理磁盘资源将使用卷 GUID 发送 CsvControlSetVolumeId。 堆栈上的每个筛选器都可以使用 CsvControlSetVolumeId 控件来存储卷 GUID。 筛选器不能完成此控件。 相反,它们应该允许它向下堆栈,从而允许其他筛选器来存储 GUID。
要求
要求 | 价值 |
---|---|
标头 | ntifs.h |