FSCTL_ENUM_EXTERNAL_BACKING控制代码

FSCTL_ENUM_EXTERNAL_BACKING控制代码开始或继续枚举具有支持源的卷上的文件。 对于请求的每个成功完成,将返回支持的文件的标识符。 无论哪个外部提供程序支持它,都会枚举所有支持的文件。 需要连续 FSCTL_ENUM_EXTERNAL_BACKING 请求来枚举卷上所有支持的文件。

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

参数

  • 实例 [in]: 仅 FltFsControlFile 。 调用方不透明实例指针。 此参数是必需的,不能 NULL

  • FileObject [in]: FltFsControlFile 。 指定要卸载的卷的文件指针对象。 此参数是必需的,不能 NULL

  • FileHandle [in]: ZwFsControlFile 。 要卸载的卷的文件句柄。 此参数是必需的,不能 NULL

  • FsControlCode [in]:作的控制代码。 对此作使用 FSCTL_ENUM_EXTERNAL_BACKING

  • InputBuffer [in]:无。 设置为 NULL

  • InputBufferLength [in]:设置为 0。

  • OutputBuffer [out]:指向输出缓冲区的指针,其大小必须足够大,才能接收一个或多个 WOF_EXTERNAL_FILE_ID 结构。

  • OutputBufferLength [out]: OutputBuffer 指向的输出缓冲区的大小。 OutputBufferLength 必须为 >sizeof(WOF_EXTERNAL_FILE_ID)。

  • LengthReturned [out]:指定成功完成后写入 OutputBuffer 中的字节数。

状态块

如果作成功,FltFsControlFileZwFsControlFile 将返回STATUS_SUCCESS。 否则,相应的函数可能会返回以下 NTSTATUS 值之一。

Code 含义
访问被拒绝 请求者没有管理权限。
STATUS_BUFFER_TOO_SMALL OutputBuffer 指向的输出缓冲区的长度,由 OutputBufferLength 指定的长度太小。
STATUS_NO_MORE_FILES 卷上没有更多文件具有支持源。
内部错误状态 请求的卷不可访问。
STATUS_INVALID_DEVICE_REQUEST 支持服务不存在或未启动。

注解

OutputBuffer 中返回的WOF_EXTERNAL_FILE_ID结构包含支持文件的唯一文件标识符。 结构在 ntifs.h 中定义,如下所示。

typedef struct _WOF_EXTERNAL_FILE_ID {
    FILE_ID_128 FileId;
} WOF_EXTERNAL_FILE_ID, *PWOF_EXTERNAL_FILE_ID;

发出 FSCTL_ENUM_EXTERNAL_BACKING 请求,以检索卷上具有支持源的每个文件的标识符。 枚举所有文件时,将返回STATUS_NO_MORE_FILES状态代码。

要求

要求类型 要求
支持的最低客户端 Windows 8.1 更新
标题 Ntifs.h (包括 Ntifs.hFltkernel.h

另请参阅

FltFsControlFile

ZwFsControlFile

FSCTL_GET_EXTERNAL_BACKING