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

另请参阅

文件管理枚举

CSV_CONTROL_PARAM

CSV_QUERY_FILE_REVISION

CSV_QUERY_MDS_PATH

CSV_QUERY_REDIRECT_STATE

FSCTL_CSV_CONTROL