C++ 使用ReadFile时重叠结构是否更新?

C++ 使用ReadFile时重叠结构是否更新?,c++,winapi,readfile,overlapped-io,C++,Winapi,Readfile,Overlapped Io,我正在学习一些关于win32编程的知识。 我在参考手册(这里:)上读到 如果lpOverlapped不为NULL,则读取操作从重叠结构中指定的偏移量开始,并且在读取操作完成之前,ReadFile不会返回。系统会在ReadFile返回之前更新重叠偏移量 但是,如果我调用ReadFile(hmyFile,&myrecord,sizeof(record\t),&n,&ov)我看到值ov.offset保持不变。为什么呢我在哪里误解了参考手册中的说明 更多详细信息: 文件处理程序以hmyFile=Crea

我正在学习一些关于win32编程的知识。 我在参考手册(这里:)上读到

如果lpOverlapped不为NULL,则读取操作从重叠结构中指定的偏移量开始,并且在读取操作完成之前,ReadFile不会返回。系统会在ReadFile返回之前更新重叠偏移量

但是,如果我调用
ReadFile(hmyFile,&myrecord,sizeof(record\t),&n,&ov)我看到值
ov.offset
保持不变。为什么呢我在哪里误解了参考手册中的说明

更多详细信息:
文件处理程序以
hmyFile=CreateFile的形式打开(argv[1],泛型读取|泛型写入,文件共享|读取|文件共享|写入,NULL,打开|存在,文件属性|正常,NULL)

我没有使用重叠的
FILE\u FLAG\u

,因为注释表明这是文档中的错误。实际行为是更新文件指针,就像lpOverlapped为NULL且句柄为同步时一样。较旧版本的文档可以做到这一点。以下内容摘自2000年7月版本的平台SDK文档:

ReadFile函数从位置开始从文件读取数据 由文件指针指示。读取操作完成后, 文件指针根据实际读取的字节数进行调整,除非 文件句柄是使用重叠属性创建的。[……]

如果未打开hFile,且文件\u标志\u重叠且lpOverlapped不为空, 读取操作从重叠结构中指定的偏移量开始。 ReadFile在读取操作完成之前不会返回


这是一个打字错误,只更新了内部成员。那你是什么意思?这是文档中的一个错误。如果您想安全起见,请将偏移量保存在单独的变量中,自己更新,并在每次操作之前将其复制到重叠结构中。我在MSDN文档页上写了一份反馈,希望Microsoft能够阅读它