在C运行时库层面上,查看fread、fwrite和fseek。 在Win32 API级别上,可以查看ReadFile、WriteFile和SetFilePointer。MSDN对文件I/O API有广泛的覆盖。请注意,ReadFile和WriteFile都需要一个OVERLAPPED结构参数,它允许您指定文件偏移量。即使以同步(即非“重叠”)I/O打开,也会针对支持字节偏移的所有文件尊重偏移量。 根据你所要解决的问题,文件映射可能是更好的设计选择。
似乎您只是使用 lpOverlapped 参数来ReadFile/WriteFile,并传递一个指向具有偏移量的 OVERLAPPED 结构的指针,该偏移量在 Offset 和 OffsetHigh 中指定。 (注:除非使用了 FILE_FLAG_OVERLAPPED 标记打开句柄,否则实际上不会出现重叠的 IO。)
Oren提供的答案似乎是正确的,但似乎不符合需求。实际上,我也在这里搜索答案,但没有找到。所以,我在这里更新一下。 如上所述,在C运行时库级别上,有fread,fwrite和fseek。 在Win32 API级别上,我们可以有两个抽象级别。一个在较低级别工作,它使用文件描述符,另一个在较高级别工作,它使用Windows定义的数据结构,如文件和句柄。 如果您想要处理文件和句柄,可以使用 ReadFile、WriteFile 和 SetFilePointer。但是大多数 C++ 开发人员更喜欢使用文件描述符进行操作。为此,您可以使用 _read、_write 和 _lseek。