FSCTL_OFFLOAD_READ控制代码
FSCTL_OFFLOAD_READ控制代码为支持卸载读取基元的存储系统中的数据块启动卸载读取。
若要执行此操作,请使用以下参数调用 FltFsControlFile 或 ZwFsControlFile 。
参数
实例 [in]:仅限 FltFsControlFile 。 调用方不透明的实例指针。 此参数是必需的,不能为 NULL。
FileObject [in]: 仅 FltFsControlFile 。 指定要从中读取的文件的文件指针对象。 此参数是必需的,不能为 NULL。
FileHandle [in]:仅 ZwFsControlFile 。 要从中读取的文件的文件句柄。 此参数是必需的,不能为 NULL。
FsControlCode [in]:操作的控制代码。 对此操作使用 FSCTL_OFFLOAD_READ 。
InputBuffer [in]:指向 FSCTL_OFFLOAD_READ_INPUT 结构的指针,其中包含要读取的数据块的大小和偏移量。
InputBufferLength [in]: InputBuffer 指向的缓冲区的大小(以字节为单位)。 此值的大小 为 (FSCTL_OFFLOAD_READ_INPUT) 。
OutputBuffer [out]:指向 FSCTL_OFFLOAD_READ_OUTPUT 结构的指针,该结构接收卸载读取操作的结果。
OutputBufferLength [out]: OutputBuffer 参数指向的缓冲区的大小(以字节为单位)。 此值必须至少为 (FSCTL_OFFLOAD_READ_OUTPUT) 大小 。
状态块
如果操作成功,FltFsControlFile 或 ZwFsControlFile 将返回STATUS_SUCCESS。 否则,相应的函数可能会返回以下 NTSTATUS 值之一。
代码 | 含义 |
---|---|
STATUS_INVALID_DEVICE_REQUEST | 指定的句柄不是有效的文件句柄 |
STATUS_INVALID_PARAMETER | 参数无效。 请参阅“备注”。 |
STATUS_VOLUME_DISMOUNTED | 文件系统卷已卸载。 |
STATUS_NOT_SUPPORTED | 此卷不支持卸载读取操作。 |
STATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED | 不支持请求的文件类型。 以下文件类型不支持卸载操作:事务处理的文件 (TxF) ;非用户文件;压缩文件;加密文件;稀疏文件;NTFS 元数据文件。 |
STATUS_FILE_DELETED | 此文件的数据流无效。 |
STATUS_FILE_CLOSED | 文件句柄已关闭。 |
STATUS_INVALID_HANDLE | 指定的文件句柄无效。 |
STATUS_FILE_LOCK_CONFLICT | 由于当前文件锁定状态,读取访问权限不足。 |
STATUS_END_OF_FILE | FSCTL_OFFLOAD_READ_INPUT 的 FileOffset 成员在 EOF) 文件结束 (之后开始。 |
STATUS_DISMOUNTED_VOLUME | 卸载读取不能发生在已卸除的卷上。 |
STATUS_INSUFFICIENT_RESOUCES | 可用资源不足,无法完成请求。 |
STATUS_BUFFER_TOO_SMALL | OutputBufferLength 太小, OutputBuffer 无法接收 FSCTL_OFFLOAD_READ_OUTPUT 结构。 |
注解
卸载读取仅适用于普通文件。 有关不支持的文件类型的列表,请参阅 STATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED 的说明。
读取可能超出有效数据长度 (VDL) ,但不能超过 EOF。
返回STATUS_INVALID_PARAMETER时,错误可能是以下无效参数之一:
- 文件大小小于 PAGE_SIZE。
- InputBufferLength<
sizeof(FSCTL_OFFLOAD_READ_INPUT)
。 - FSCTL_OFFLOAD_READ_INPUT的以下一个或多个成员不正确:
- FileOffset 不是卷逻辑扇区大小的倍数。
- CopyLength 不是卷逻辑扇区大小的倍数。
- 大小 不是 FSCTL_OFFLOAD_READ_INPUT 结构的大小。
- FileOffset + CopyLength>MAXULONGLONG。
要求
要求类型 | 要求 |
---|---|
最低受支持的客户端 | Windows 8 |
标头 | Ntifs.h (包括 Ntifs.h 或 Fltkernel.h) |