FSCTL_REARRANGE_FILE IOCTL (ntifs.h)
FSCTL_REARRANGE_FILE 重新排列文件中的分配,将群集从文件中请求的连续源范围移动到同一文件中的另一个位置。
主要代码
输入缓冲区
指向描述要重新排列的分配 的REARRANGE_FILE_DATA 结构的指针。 (对于 32 位调用方,输入缓冲区是指向 REARRANGE_FILE_DATA32 structure 的指针。)
输入缓冲区长度
输入缓冲区的大小(以字节为单位)。
输出缓冲区
没有;设置为 NULL。
输出缓冲区长度
设置为零。
状态块
返回值
FSCTL_REARRANGE_FILE 成功完成后返回STATUS_SUCCESS;否则,它将返回 NTSTATUS 代码,如下所示之一。
返回代码 | 含义 |
---|---|
STATUS_ACCESS_DENIED | 仅允许内核模式调用。 |
STATUS_BUFFER_TOO_SMALL | 指定的输入缓冲区长度小于大小 (REARRANGE_FILE_DATA) 。 |
STATUS_PENDING | 操作完成挂起。 |
注解
请求参数 包含源和目标文件字节偏移量以及要移动的源区域长度(以字节为单位),所有这些参数都必须与群集对齐。
- 如果向下移动群集,则目标文件偏移量指示应对齐移动源范围的下边界的点。
- 如果向上移动群集,则目标文件偏移量指示应对齐源范围的上边界的点。
在这两种情况下,目标偏移量都指示源范围应在目标偏移量开始的群集之前插入,这一区别是由分配大小保持固定的约束所强制执行的。
与 FSCTL_SHUFFLE_FILE不同, FSCTL_REARRANGE_FILE 不允许添加包含随机数据的分配。
若要执行此操作,请使用以下参数调用 FltFsControlFile 或 ZwFsControlFile 。
参数 | 说明 |
---|---|
实例 | [in]仅适用于 FltFsControlFile 。 调用方不透明的实例指针。 此参数是必需的,不能为 NULL。 |
FileObject | [in]仅适用于 FltFsControlFile 。 作为此请求目标的文件或目录的文件对象指针。 此参数是必需的,不能为 NULL。 |
FileHandle | [in]仅适用于 ZwFsControlFile 。 作为此请求目标的文件或目录的文件句柄。 此参数是必需的,不能为 NULL。 |
IoStatusBlock | [out]仅适用于 ZwFsControlFile 。 指向包含请求最终状态 的IO_STATUS_BLOCK 结构的指针。 |
FsControlCode | [in]设置为 FSCTL_REARRANGE_FILE。 |
InputBuffer | [in]请参阅 IOCTL 参数。 |
InputBufferLength | [in]请参阅 IOCTL 参数。 |
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 10 版本 1809 |
标头 | ntifs.h |