FSCTL_SET_ZERO_DATA控制代码

FSCTL_SET_ZERO_DATA控件代码使用零 (0) 填充指定的文件范围。 如果文件稀疏或已压缩,NTFS 文件系统可能会解除分配文件中的磁盘空间。 这会在不扩展文件大小的情况下将字节范围设置为零 (0) 。

若要从驱动程序执行此操作,请使用以下参数调用 FltFsControlFile

参数

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

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

  • FsControlCode [in]:操作的控件代码。

对此操作使用 FSCTL_SET_ZERO_DATA

FileOffset 成员是设置为零的第一个字节的字节偏移量 (0 ) ,BeyondFinalZero 成员是第一个字节超过最后一个零 (0) 字节的字节偏移量。

FILE_ZERO_DATA_INFORMATION_EX 中的 Flags 成员指定操作的修饰符。 例如,当 Flags 设置为 FILE_ZERO_DATA_INFORMATION_FLAG_PRESERVE_CACHED_DATA 时,不会清除与此文件范围对应的缓存内容。

  • InputBufferLength [in]:输入缓冲区的大小(以字节为单位)。

  • OutputBuffer [out]:未与此操作一起使用;设置为 NULL

  • OutputBufferLength [out]:未与此操作一起使用;设置为零。

状态块

FltFsControlFile 返回 STATUS_SUCCESS 或相应的 NTSTATUS 值。

返回代码 含义
状态_INSUFFICIENT_RESOURCES 内存不足,无法完成此操作。
STATUS_INVALID_PARAMETER InputBufferLength 小于FILE_ZERO_DATA_INFORMATION结构的大小,或者指定的文件是系统元数据文件或目录。
STATUS_ACCESS_DENIED FILE_ZERO_DATA_INFORMATION_FLAG_PRESERVE_CACHED_DATA是从用户模式设置的。
STATUS_MEDIA_WRITE_PROTECTED 卷当前处于写入保护状态。

要求

要求类型 要求
标头 Ntifs.h (包括 Ntifs.h)

另请参阅

FltFsControlFile

FILE_ZERO_DATA_INFORMATION

FILE_ZERO_DATA_INFORMATION_EX