Win32 Fallocate(fd, FALLOC_FL_PUNCH_HOLE|FALLOC_FL_KEEP_SIZE, ...) API 示例?

问题描述 投票:0回答:1

Linux 有

fallocate(fd, FALLOC_FL_PUNCH_HOLE|FALLOC_FL_KEEP_SIZE, ...)
可以在文件中打孔,即释放给定的块并使文件成为“稀疏文件”。

但是如何使用 Win32 API 做到这一点呢?有人有 Win32 的示例吗,Win32 相当于 Linux

fallocate(fd, FALLOC_FL_PUNCH_HOLE|FALLOC_FL_KEEP_SIZE, 1048576, 2097152);

winapi sparse-file
1个回答
0
投票
DWORD dwBytesReturned;
FILE_ZERO_DATA_INFORMATION FZDI;
FZDI.FileOffset.QuadPart      = 1048576;
FZDI.BeyondFinalZero.QuadPart = 1048576 + 2097152;
int res = DeviceIoControl(hFile, FSCTL_SET_ZERO_DATA, &FZDI, sizeof(FZDI), NULL, 0, &dwBytesReturned, NULL);
© www.soinside.com 2019 - 2024. All rights reserved.