共享文件和内存

【勇芳软件工作室】汉化HomePreviousNext

文件映射可用于在两个或多个进程之间共享文件或内存。要共享文件或内存,所有进程必须使用【相同】文件映射对象的名称或句柄。

要共享文件,第一个进程使用CreateFile功能创建或打开文件。接下来,它使用CreateFileMapping函数创建文件映射对象,指定文件句柄和文件映射对象的名称。事件,信号量,互斥体和文件映射对象的名称共享相同的名称空间。因此,CreateFileMappingOpenFileMapping函数如果指定了另一种类型的对象正在使用的名称,则它们将失败。

要共享与文件无关的内存,进程必须使用CreateFileMapping函数,并指定(HANDLE)0xFFFFFFFF作为【HFILE】参数,而不是现有的文件句柄。相应的文件映射对象访问由系统页面文件支持的内存。在CreateFileMapping的调用中指定(HANDLE)0xFFFFFFFF的【HFILE】时,必须指定大于零的大小。

其他进程获取由第一个进程创建的文件映射对象的句柄的最简单方法是使用OpenFileMapping函数并指定对象的名称。这被称为【命名共享内存】.如果文件映射对象没有名称,则该进程必须通过继承或复制获取该对象的句柄。有关继承和重复的更多信息,请参阅进程和线程手柄和物体.

共享文件或内存的进程必须使用MapViewOfFileMapViewOfFileEx功能创建文件视图。他们必须使用信号量,互斥体,事件或其他互斥技术来协调他们的访问。有关详细信息,请参阅同步.

共享文件映射对象将不会被销毁,直到使用它的所有进程使用CloseHandle函数关闭它们的句柄。