C Windows上存在多少独立的文件指针/位置?

C Windows上存在多少独立的文件指针/位置?,c,windows,file,C,Windows,File,如果我在一个线程中打开一个文件(使用CreateFile())两次,使我同时拥有两个有效的句柄,那么这两个文件句柄是具有共享的“文件指针”(SetFilePointer()),还是具有单独的“文件指针” 如果在一个进程中有两个并发线程,并且每个线程对同一个文件拥有一个句柄,该怎么办。这两个句柄是否具有独立的文件指针?不同的文件句柄具有不同的文件指针,因此这些场景将毫无问题地工作(例如,两个线程可以“并发”读取同一文件的不同部分,只要每个线程专门使用自己的文件句柄).通过对CreateFile的不

如果我在一个线程中打开一个文件(使用CreateFile())两次,使我同时拥有两个有效的句柄,那么这两个文件句柄是具有共享的“文件指针”(SetFilePointer()),还是具有单独的“文件指针”


如果在一个进程中有两个并发线程,并且每个线程对同一个文件拥有一个句柄,该怎么办。这两个句柄是否具有独立的文件指针?

不同的文件句柄具有不同的文件指针,因此这些场景将毫无问题地工作(例如,两个线程可以“并发”读取同一文件的不同部分,只要每个线程专门使用自己的文件句柄).

通过对
CreateFile
的不同调用创建的文件句柄具有独立的文件指针。您可以根据需要在单独的线程中使用它们


DuplicateHandle复制的句柄
共享一个文件指针:不要使用它来获取要在另一个线程中使用的“单独”文件句柄。

每次线程打开一个文件时,都会使用一组新的句柄特定属性创建一个新的句柄。例如,“当前字节偏移量”属性是指文件中使用该句柄进行下一次读写操作的位置。文件的每个句柄都有一个专用字节偏移量,即使基础文件是共享的。文件对象对于进程也是唯一的,除非进程将文件句柄复制到另一个进程(通过使用Windows函数)或子进程从父进程继承文件句柄。在这些情况下,这两个进程具有引用同一文件对象的单独句柄。 Windows内部构件5