win32进程间通信有关问题高手

win32进程间通信问题请教各位高手!
有两个进程A,B。进程B模拟系统的工作环境,从数据库中把数据读出,然后传递给进程A。进程B把数据读入内存后,该如何才能把数据传给A了?

据我所知道的方式有内存映射文件和WM_COPYDATA消息这两种办法。我对内存映射文件的理解是,一个文件,映射进进程的地址空间中。然后进程就可以用使用内存一样使用内存映射文件。
但是我的疑问是:在使用内存映射文件的时候,是把文件映射到进程的地址空间中,那说明文件实际上还是在硬盘上,而并没有读入内存?如果使用这种手段实现大量数据的进程间通信,那不是效率很低吗?
如果使用WM_COPYDATA消息机制,到是可以让进程B把数据读入一块内存区域,然后把这块区域的指针传递给进程A。但是我也有疑问:如果数据量很大,超过了可用的物理内存,那进程B该怎么办了?把数据读到虚拟内存中?如果数据量大到甚至超过了物理内存和虚拟内存之和又该怎么办了?

------解决方案--------------------
数据量那么大,单个进程处理时也得 每次从磁盘缓冲一小段数据到内存,使用后释放,再缓冲下一段数据的方法吧~, 那么两个进程就也得这样了.
------解决方案--------------------
内存映射文件效率最高的吧?