FSCTL_QUERY_FILE_LAYOUT控制代码
FSCTL_QUERY_FILE_LAYOUT控制代码检索文件系统卷的文件布局信息。 此请求的结果是文件布局信息条目的集合。 通过在 QUERY_FILE_LAYOUT_INPUT 结构中设置包含标志来控制返回的条目类型。 可以选择性地通过提供一组文件区来筛选结果,以限制布局信息的选择。
若要执行此操作,请使用以下参数调用 FltFsControlFile 或 ZwFsControlFile 。
参数
FileObject [in]: 仅 FltFsControlFile 。 文件系统卷的文件对象指针。 此参数是必需的,不能为 NULL。
FileHandle [in]:仅 ZwFsControlFile 。 文件系统卷的文件句柄。 此参数是必需的,不能为 NULL。
FsControlCode [in]:操作的控制代码。 对此操作使用 FSCTL_QUERY_FILE_LAYOUT 控制代码。
InputBuffer [in]:指向调用方分配 的QUERY_FILE_LAYOUT_INPUT 结构的指针。 此结构包含选择选项。 可选的文件区包含在 QUERY_FILE_LAYOUT_INPUT之后。
InputBufferLength [in]: InputBuffer 参数指向的缓冲区的大小(以字节为单位)。 当 NumberOfPairs为 0 时,InputBuffer 的大小必须至少为 (QUERY_FILE_LAYOUT_INPUT) + (size of (Filter) * (NumberOfPairs> - 1 #C6) 。 否则,请将 InputBufferLength = sizeof (QUERY_FILE_LAYOUT_INPUT) 。
OutputBuffer [out]:指向调用方分配 的QUERY_FILE_LAYOUT_OUTPUT 结构的指针。 这是此缓冲区中后面的文件布局条目的标头。
OutputBufferLength [out]: OutputBuffer 参数指向的缓冲区的大小(以字节为单位)。 OutputBuffer 的大小必须足以包含QUERY_FILE_LAYOUT_OUTPUT以及返回的文件布局和流布局结构。
状态块
FltFsControlFile 或 ZwFsControlFile 返回STATUS_SUCCESS或相应的 NTSTATUS 值,例如以下值之一:
代码 | 含义 |
---|---|
STATUS_INVALID_PARAMETER | 文件系统卷不是打开的用户卷,或者缓冲区长度值不正确,或者设置了无效的查询选项。 |
STATUS_ACCESS_DENIED | 调用方无法访问文件系统卷。 |
STATUS_INVALID_USER_BUFFER | InputBuffer 或 OutputBuffer 的指针未正确对齐。 |
STATUS_BUFFER_TOO_SMALL | OutputBufferLength 中的值指示 OutputBuffer 太小,无法包含至少一个布局条目。 |
STATUS_END_OF_FILE | InputBuffer 或 OutputBuffer 的指针未正确对齐。 |
注解
若要检索卷的所有布局条目,将多次发出FSCTL_QUERY_FILE_LAYOUT请求,直到返回 STATUS_END_OF_FILE 。 返回 STATUS_SUCCESS 时,调用方可以继续发送针对其余布局条目的FSCTL_QUERY_FILE_LAYOUT请求。
通过在 QUERY_FILE_LAYOUT_INPUT 的 Flags 成员中包含 QUERY_FILE_LAYOUT_RESTART 标志,可以随时重启布局条目的枚举。 此外,在FSCTL_QUERY_FILE_LAYOUT返回 STATUS_END_OF_FILE后,必须在下一个 FSCTL_QUERY_FILE_LAYOUT 请求中包含 QUERY_FILE_LAYOUT_RESTART 标志,以开始另一个布局条目枚举。
ReFS 不支持此代码。
要求
要求类型 | 要求 |
---|---|
最低受支持的客户端 | Windows 8.1 更新 |
标头 | Ntifs.h (包括 Ntifs.h 或 Fltkernel.h) |