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.h 或 Fltkernel.h) |