文件映射和IPC

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

【文件映射】使进程能够将文件的内容视为进程的地址空间中的内存块。因此,该进程可以使用简单的指针操作来检查和修改文件的内容,而不是使用文件输入和输出(I / O)操作。

Win32 API允许两个或多个进程访问相同的【文件映射对象】.每个进程在其自己的地址空间中接收一个指向内存的指针。使用此指针,该进程可以读取或修改文件的内容。

应用程序可以通过三种方式共享另一个进程在一个进程中创建的文件映射对象:

*遗产。第一个进程创建文件映射对象,然后允许对象的句柄由子进程继承。

*命名文件映射。第一个进程使用一个众所周知的名称创建文件映射对象(可以与文件名不同)。第二个进程通过指定着名的名称来打开文件映射对象。或者,第一个进程可以创建具有唯一名称的文件映射对象,并通过某些其他IPC机制(名为pipe,mailslot等)将该名称传达给第二个进程。

*处理重复。第一个进程创建文件映射对象,然后将对象的句柄传递给第二个进程。然后第二个进程复制句柄以访问共享内存。原始进程可以通过本主题中描述的其他IPC机制之一(称为管道,邮槽等)将文件映射句柄传达到第二个进程。有关复制句柄的更多信息,请参阅同步.

当两个或多个进程对共享内存块具有读写访问权限时,它们必须使用某种同步对象(如信号量)来防止多任务环境中的数据损坏。

文件映射非常有效,并且还提供操作系统支持的安全属性,可以帮助防止未经授权的数据损坏。文件映射只能在本地计算机上的进程之间使用;它不能通过网络使用。但是,应用程序可以为远程安装的卷上的文件创建一个文件映射对象。例如,如果远程服务器作为F驱动器安装,则应用程序可以创建文件映射对象到该卷上的文件。但是,在远程服务器上运行的进程无法在本地计算机上运行进程共享文件映射对象。

关键文件映射是同一台计算机上的两个或多个进程共享数据的有效方法,但开发人员必须提供进程之间的同步。有关详细信息,请参阅文件映射同步.