gpt4 book ai didi

c - 没有 FILE_FLAG_NO_BUFFERING 的 SetFilePointer

转载 作者:太空宇宙 更新时间:2023-11-04 06:20:01 25 4
gpt4 key购买 nike

考虑这个程序:

#include <stdio.h>
#include <windows.h>
int main(int argc, char** argv) {
if (argc != 2)
return 1;
HANDLE j = CreateFile("\\\\.\\F:", FILE_GENERIC_READ, FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, NULL);
int k = SetFilePointer(j, atoi(argv[1]), NULL, FILE_BEGIN);
printf("%d\n", k);
}

我得到这些结果:

> a 512
512

> a 513
-1

> a 1024
1024

所以我只能以卷扇区大小的倍数移动文件指针。这是 FILE_FLAG_NO_BUFFERING 的预期行为旗帜。但是我没有使用那个标志,为什么我会得到这些结果?

最佳答案

您打开了对驱动器卷而不是文件的直接访问。无论缓冲如何,卷的读/写必须是扇区大小的偶数倍。您不能读取/写入部分扇区。

关于c - 没有 FILE_FLAG_NO_BUFFERING 的 SetFilePointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37103491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com