FSCTL_SET_REPARSE_POINT控制代码

FSCTL_SET_REPARSE_POINT控制代码在文件或目录上设置一个重新分析点。

若要执行此操作,请使用以下参数调用 ZwFsControlFile

微筛选器应使用 FltTagFile 而不是 FSCTL_SET_REPARSE_POINT 来设置重新分析点。

有关重新分析点和FSCTL_SET_REPARSE_POINT控制代码的详细信息,请参阅Microsoft Windows SDK文档。

参数

  • FileHandle [in]:要设置重分析点的文件或目录的文件句柄。 此参数是必需的,不能为 NULL

  • FsControlCode [in]:操作的控制代码。 对此操作使用 FSCTL_SET_REPARSE_POINT。

  • InputBuffer [in]:指向调用方分配 的REPARSE_GUID_DATA_BUFFER 或包含重新分析点数据的 REPARSE_DATA_BUFFER 结构的指针。 如果正在修改现有的重新分析点,则此结构的 ReparseTag 成员中指定的标记必须与要修改的重新分析点的标记匹配。 此外,如果重新分析点是非 Microsoft) 重分析点的第三方 (,则结构的 ReparseGuid 成员中指定的 GUID 是REPARSE_GUID_DATA_BUFFER结构必须与要修改的重新分析点的 GUID 匹配。

  • InputBufferLength [in]: InputBuffer 参数指向的缓冲区的大小(以字节为单位)。 对于REPARSE_GUID_DATA_BUFFER结构,此值必须至少REPARSE_GUID_DATA_BUFFER_HEADER_SIZE,加上用户定义的数据的大小,并且该值必须小于或等于MAXIMUM_REPARSE_DATA_BUFFER_SIZE。 对于REPARSE_DATA_BUFFER结构,此值必须至少REPARSE_DATA_BUFFER_HEADER_SIZE,加上用户定义的数据的大小,并且该值必须小于或等于MAXIMUM_REPARSE_DATA_BUFFER_SIZE。

  • OutputBuffer [out]:未与此操作一起使用;设置为 NULL

  • OutputBufferLength [out]:未与此操作一起使用;设置为零。

状态块

ZwFsControlFile 返回STATUS_SUCCESS或适当的 NTSTATUS 值,例如以下值之一:

代码 含义
STATUS_DIRECTORY_NOT_EMPTY 无法在非空目录上设置重分析点。 这是错误代码。
STATUS_EAS_NOT_SUPPORTED 如果此请求位于事务中,则无法对文件设置重分析点。 这是错误代码。
STATUS_IO_REPARSE_DATA_INVALID 指定的参数值之一无效。 这是错误代码。
STATUS_IO_REPARSE_TAG_MISMATCH 调用方指定的重分析标记与要修改的重新分析点的标记不匹配。 这是错误代码。
STATUS_NOT_A_REPARSE_POINT 文件或目录不是重新分析点。 这是错误代码。
STATUS_REPARSE_ATTRIBUTE_CONFLICT 重新分析点是第三方重新分析点,调用方指定的重新分析 GUID 与要修改的重新分析点的 GUID 不匹配。 这是错误代码。

要求

要求类型 要求
标头 Ntifs.h (包括 Ntifs.hFltkernel.h)

另请参阅

IRP_MJ_FILE_SYSTEM_CONTROL 的 FLT_PARAMETERS

FltTagFile

FltUntagFile

FSCTL_DELETE_REPARSE_POINT

FSCTL_GET_REPARSE_POINT

IRP_MJ_FILE_SYSTEM_CONTROL

IsReparseTagMicrosoft

IsReparseTagNameSurrogate

REPARSE_DATA_BUFFER

REPARSE_GUID_DATA_BUFFER

ZwFsControlFile