FSCTL_ENUM_EXTERNAL_BACKING控制代码
FSCTL_ENUM_EXTERNAL_BACKING控制代码开始或继续枚举具有支持源的卷上的文件。 每次成功完成请求时,都会返回所支持文件的标识符。 无论哪个外部提供程序支持它,都会枚举所有支持的文件。 需要连续 FSCTL_ENUM_EXTERNAL_BACKING 请求来枚举卷上所有支持的文件。
若要执行此操作,请使用以下参数调用 FltFsControlFile 或 ZwFsControlFile 。
参数
实例 [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 的 字节数。
状态块
如果操作成功,FltFsControlFile 或 ZwFsControlFile 将返回STATUS_SUCCESS。 否则,相应的函数可能会返回以下 NTSTATUS 值之一。
代码 | 含义 |
---|---|
STATUS_ACCESS_DENIED | 请求者没有管理权限。 |
STATUS_BUFFER_TOO_SMALL | OutputBuffer 指向并由 OutputBufferLength 指定的输出缓冲区的长度太小。 |
STATUS_NO_MORE_FILES | 卷上没有更多文件具有后备源。 |
STATUS_INTERNAL_ERROR | 无法访问请求的卷。 |
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.h 或 Fltkernel.h) |