FSCTL_SET_ZERO_DATA控制代码
FSCTL_SET_ZERO_DATA控件代码使用零 (0) 填充指定的文件范围。 如果文件稀疏或已压缩,NTFS 文件系统可能会解除分配文件中的磁盘空间。 这会在不扩展文件大小的情况下将字节范围设置为零 (0) 。
若要从驱动程序执行此操作,请使用以下参数调用 FltFsControlFile 。
参数
实例:调用方不透明的实例指针。 此参数是必需的,不能为 NULL。
FileObject [in]:指向要向其写入零的文件的文件对象指针。 此参数是必需的,不能为 NULL。
FsControlCode [in]:操作的控件代码。
对此操作使用 FSCTL_SET_ZERO_DATA 。
- InputBuffer [in]:指向 FILE_ZERO_DATA_INFORMATION 或 FILE_ZERO_DATA_INFORMATION_EX 结构的指针,该结构指定要设置为零的文件范围。
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) |