1

我有几个对象持有同一个文件的句柄。但是,这些对象中的每一个都在读取/写入文件的不同部分。我需要阻止对文件的外部访问,但仍然能够从我的进程中为其创建新句柄。

如果我在调用时不共享读/写访问权限CreateFile,则无法从我的进程中获取文件的新句柄。如果我使用DuplicateHandle,所有句柄将共享相同的文件位置。

我可以通过对文件进行代理来解决这个问题,该文件根据需要到处寻找,但这会导致糟糕的设计。有没有办法实现这样的内部共享?

4

2 回答 2

1

文件通常不适用于诸如此类的多用户交互。这里需要一个数据库。然后您需要写入的数据可以保存到数据库中,所有同步处理现在都将由数据库负责。如果您仍然需要文件,则在输入数据后,最好根据数据库数据在需要时生成文件。

于 2013-09-12T22:48:11.933 回答
1

根据您的需要,您可以调用CreateFile()一次来创建/打开文件,然后让每个对象使用CreateFileMapping()MapViewOfFile()使用单个文件句柄作为基础访问文件的不同部分。

于 2013-09-13T01:04:48.563 回答