FSCTL_OFFLOAD_WRITE控制代码

FSCTL_OFFLOAD_WRITE控制代码为支持卸载写入基元的存储系统中的数据块启动卸载写入。

若要执行此操作,微筛选器驱动程序使用以下参数调用 FltFsControlFile ,文件系统、重定向器和旧文件系统筛选器驱动程序使用以下参数调用 ZwFsControlFile

参数

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

  • FileObject [in]: FltFsControlFile only. 指定要写入的文件的文件指针对象。 此参数是必需的,不能为 NULL。

  • FileHandle [in]: 仅 ZwFsControlFile 。 要写入的文件的文件句柄。 此参数是必需的,不能为 NULL。

  • FsControlCode [in]:操作的控件代码。 对此操作使用 FSCTL_OFFLOAD_WRITE

  • InputBuffer [in]:指向 FSCTL_OFFLOAD_WRITE_INPUT 结构的指针,其中包含要读取的数据块的大小和偏移量。

  • InputBufferLength [in]: InputBuffer 指向的缓冲区的大小(以字节为单位)。 此值为 sizeof (FSCTL_OFFLOAD_WRITE_INPUT) 。

  • OutputBuffer [out]:指向 FSCTL_OFFLOAD_WRITE_INPUT 结构的指针,其中包含要读取的数据块的大小和偏移量。

  • OutputBufferLength [out]: OutputBuffer 参数指向的缓冲区的大小(以字节为单位)。 此值必须至少 为大小 (FSCTL_OFFLOAD_READ_OUTPUT) 。

状态块

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

代码 含义
STATUS_INVALID_DEVICE_REQUEST 指定的句柄不是有效的文件句柄。
STATUS_INVALID_PARAMETER 参数无效。 请参阅“备注”。
STATUS_NOT_SUPPORTED 此卷不支持卸载读取操作。
STATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED 不支持请求的文件类型。 以下文件类型不支持卸载操作:事务处理的文件 (TxF) ;非用户文件;压缩文件;加密文件;稀疏文件;NTFS 元数据文件。
STATUS_TOO_LATE 卸载卷后,尝试对卷执行写入操作。
STATUS_FILE_DELETED 此文件的数据流无效。
STATUS_FILE_CLOSED 文件句柄已关闭。
STATUS_INVALID_HANDLE 指定的文件句柄无效。
STATUS_FILE_LOCK_CONFLICT 由于当前文件锁定状态,无法授予读取或写入访问权限。
STATUS_END_OF_FILE FSCTL_OFFLOAD_WRITE_INPUTFileOffset 成员在文件结尾 (EOF) 之后开始。
STATUS_DISMOUNTED_VOLUME 卸载写入不能发生在已卸除的卷上。
STATUS_MEDIA_WRITE_PROTECTED 卷是只读的。
STATUS_INSUFFICIENT_RESOUCES 资源不足,无法完成请求。
STATUS_BUFFER_TOO_SMALL InputBufferLength 太小, InputBuffer 无法包含FSCTL_OFFLOAD_WRITE_INPUT 结构,或者 OutputBufferLength 太小, 无法 接收 FSCTL_OFFLOAD_WRITE_OUTPUT 结构。

注解

卸载读取仅适用于普通文件。 有关不支持的文件类型的列表,请参阅 STATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED 的说明。

返回STATUS_INVALID_PARAMETER时,错误可能是以下无效参数之一:

  • 文件大小小于 PAGE_SIZE。
  • InputBufferLength<sizeof(FSCTL_OFFLOAD_READ_OUTPUT)
  • FSCTL_OFFLOAD_WRITE_INPUT的一个或多个成员不正确:

    FileOffset 不是卷逻辑扇区大小的倍数。 CopyLength 不是卷逻辑扇区大小的倍数。 TransferOffset 不是卷逻辑扇区大小的倍数。 大小 不是FSCTL_OFFLOAD_WRITE_INPUT 结构的大小。 FileOffset> 文件的有效数据长度 (VDL) 。 FileOffset + CopyLength>MAXULONGLONG

要求

要求类型 要求
最低受支持的客户端 Windows 8
标头 Ntifs.h (包括 Ntifs.hFltkernel.h)

另请参阅

FltFsControlFile

ZwFsControlFile

FSCTL_OFFLOAD_WRITE_INPUT

FSCTL_OFFLOAD_WRITE_OUTPUT