FSCTL_QUERY_FILE_LAYOUT控制代码

FSCTL_QUERY_FILE_LAYOUT控制代码检索文件系统卷的文件布局信息。 此请求的结果是文件布局信息条目的集合。 通过在 QUERY_FILE_LAYOUT_INPUT 结构中设置包含标志来控制返回的条目类型。 可以选择性地通过提供一组文件区来筛选结果,以限制布局信息的选择。

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

参数

  • 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以及返回的文件布局和流布局结构。

状态块

FltFsControlFileZwFsControlFile 返回STATUS_SUCCESS或相应的 NTSTATUS 值,例如以下值之一:

代码 含义
STATUS_INVALID_PARAMETER 文件系统卷不是打开的用户卷,或者缓冲区长度值不正确,或者设置了无效的查询选项。
STATUS_ACCESS_DENIED 调用方无法访问文件系统卷。
STATUS_INVALID_USER_BUFFER InputBufferOutputBuffer 的指针未正确对齐。
STATUS_BUFFER_TOO_SMALL OutputBufferLength 中的值指示 OutputBuffer 太小,无法包含至少一个布局条目。
STATUS_END_OF_FILE InputBufferOutputBuffer 的指针未正确对齐。

注解

若要检索卷的所有布局条目,将多次发出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.hFltkernel.h)

另请参阅

QUERY_FILE_LAYOUT_INPUT

QUERY_FILE_LAYOUT_OUTPUT

FltFsControlFile

ZwFsControlFile