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 文件即将进行环回装载时,请标记句柄,并请求 CVSFS 在短时间超时 (后使 I/O 失败,并在当前 20 秒) 如果 I/O 没有进展,则使句柄失效。 |
CsvControlUnmarkHandleLocalVolumeMount 值: 0x0f 当 VHD 文件即将被环回卸载时,取消标记以前由 CsvControlMarkHandleLocalVolumeMount 标记的句柄。 |
CsvControlGetCsvFsMdsPathV2 值: 0x12 搜索 MDS 路径的版本 2。 指定此值时,还必须使用 CSV_QUERY_MDS_PATH_V2 结构。 |
CsvControlDisableCaching 值: 0x13 禁用 CSV 文件的缓存。 |
CsvControlEnableCaching 值: 0x14 启用 CSV 文件的缓存。 |
CsvControlStartForceDFO 值: 0x15 强制 CSVFS 开始在下层文件对象上转发 I/O, (DFO) 。 有关详细信息,请参阅“备注”。 |
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,因此,如果在装载期间附加筛选器,该 GUID 不可用。 在附加筛选器期间,文件系统微筛选器可以发出 CsvControlQueryVolumeId 来查询 GUID 是否已可用。 必须将控件发送到堆栈顶部,以确保 csvflt 接收它。 如果卷 GUID 尚不可用,则 csvflt 将返回STATUS_UNSUCCESSFUL。 如果卷 GUID 尚不可用,则筛选器不应无法附加。
稍后,物理磁盘资源将使用卷 GUID 发送 CsvControlSetVolumeId。 堆栈上的每个筛选器都可以使用 CsvControlSetVolumeId 控件来存储卷 GUID。 筛选器不得完成此控件。 相反,它们应允许它向下堆栈,从而允许其他筛选器有机会存储 GUID。
要求
要求 | 值 |
---|---|
Header | ntifs.h |