FSCTL_GET_RETRIEVAL_POINTERS控制代码

FSCTL_GET_RETRIEVAL_POINTERS 代码检索描述特定文件的磁盘分配和位置的固定大小的数据结构。 该结构描述虚拟群集编号 (VCN、文件/流空间) 中的偏移量和逻辑群集编号 (LCN 之间的映射,以及卷空间空间) 。

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

有关重新分析点和控制代码FSCTL_GET_RETRIEVAL_POINTERS,请参阅Microsoft Windows SDK文档。

Parameters

FileObject
仅 FltFsControlFile 。 用于检索映射的备用流、文件或目录的文件FSCTL_GET_RETRIEVAL_POINTERS指针。 此参数是必需的,不能为 NULL

FileHandle
仅 ZwFsControlFile 。 用于检索映射的备用流、文件或目录FSCTL_GET_RETRIEVAL_POINTERS句柄。 如果 FileHandle 中的值是整个卷的句柄,例程将返回错误群集文件的 VCN 和区的地图。 此参数是必需的,不能为 NULL

FsControlCode
操作的控制代码。 使用FSCTL_GET_RETRIEVAL_POINTER执行该操作。

InputBuffer
指向虚拟STARTING_VCN_INPUT_BUFFER的指针,该结构指示 VCN (虚拟) 标记备用流、文件或目录的开头。 此STARTING_VCN_INPUT_BUFFER定义如下:

typedef struct {
  LARGE_INTEGER  ;
} STARTING_VCN_INPUT_BUFFER, *PSTARTING_VCN_INPUT_BUFFER;

成员

StartingVcn
VCN,FSCTL_GET_RETRIEVAL_POINTERS开始枚举盘区以及关联的虚拟和逻辑群集编号。 首次调用 FltFsControlFileZwFsControlFile 时,文件系统控制代码为 FSCTL_GET_RETRIEVAL_POINTERS, StartingVcn 应设置为零。

如果 OutputBuffer 不够大,无法容纳文件的整个 VCN 和区映射,则调用方必须使用 RETRIEVAL_POINTERS_BUFFER 结构的 NextVcn 成员中返回的值作为起始 VCN 来请求更多映射数据。

InputBufferLength
InputBuffer 的输入缓冲区的长度(以 字节为单位)。

OutputBuffer
指向类型为 RETRIEVAL_POINTERS_BUFFER结构的指针,该结构包含磁盘上对应于备用流、文件或目录的盘区枚举:

typedef struct RETRIEVAL_POINTERS_BUFFER {
 ULONG  ExtentCount;
  LARGE_INTEGER  StartingVcn;
 struct {
    LARGE_INTEGER  NextVcn;
    LARGE_INTEGER  Lcn;
  } Extents[1];
} RETRIEVAL_POINTERS_BUFFER, *PRETRIEVAL_POINTERS_BUFFER;

成员

ExtentCount
Extents 数组 中的元素 计数。

StartingVcn
启动函数调用返回的 VCN。 这不一定是函数调用请求的 VCN,因为文件系统驱动程序可能会向下舍入到找到所请求启动 VCN 的盘区的第一个 VCN。

程度
区结构的数组。 有关数组中的成员数,请参阅 ExtentCount。 数组的每个成员具有以下成员。

NextVcn
下一个区开始的 VCN。 此值减去第一个 Extents 数组成员) 的 StartingVcn (或数组 (上一个成员的 NextVcn(对于所有其他 Extents 数组成员) )是当前区的长度(在群集中)。

Lcn
当前区从卷上开始的 LCN。 在 NTFS 上,LONGLONG (-1 的值) 表示部分分配的压缩单元或稀疏文件的未分配区域。

OutputBufferLength
OutputBuffer 参数指向的缓冲区的大小(以字节为单位)。

状态块

FltFsControlFileZwFsControlFile 都STATUS_SUCCESS或相应的 NTSTATUS 错误值。

如果 VCN/区映射不适合 OutputBuffer,则两个例程将返回值 STATUS_BUFFER_OVERFLOW,并且调用方必须在下一次调用 FltFsControlFileZwFsControlFile 时,使用在 RETRIEVAL_POINTERS_BUFFER 结构的 NextVcn 成员中返回的值作为起始 VCN (StartingVcn) 请求更多映射数据。

如果 StartingVcn 中指定的值超出文件末尾,STATUS_END_OF_FILE返回。

备注

可在 FSCTL_GET_RETRIEVAL_POINTERS FASTFAT 和 exFAT 设备上使用安全控制代码。 此功能支持对闪存驱动器等设备使用 BitLocker。

要求

标头

Ntifs.h (包括 Ntifs.h)

另请参阅

FltFsControlFile

ZwFsControlFile