最近工作中需要用到进程通信的知识,例如测试控制程序和被测试程序之间的通信。在PINK的test framework也是通过3个消息队列来通信的,并且是managed code写的,具体如何实现的现在都忘了不少了。
在网上查了一通后终于找到可以通过共享内存映射来进行通信,主要是通过以下函数来完成的。
HANDLE CreateFileForMapping(LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile);
LPVOID WINAPI MapViewOfFile(
__in HANDLE hFileMappingObject,
__in DWORD dwDesiredAccess,
__in DWORD dwFileOffsetHigh,
__in DWORD dwFileOffsetLow,
__in SIZE_T dwNumberOfBytesToMap
);
在windows下面当一个进程使用CreateFileForMapping建立好文件后,另一个进程通过OpenFileMapping来打开共享的文件,但是在Windows Mobile上不支持该函数,所以第二个进程也只能通过CreateFileForMapping来打开,由于文件名一样,还是可以正常使用。
相关MSN 文章链接http://support.microsoft.com/kb/301242/zh-cn
相关Sample Cod链接:http://msdn.microsoft.com/en-us/library/aa366551(VS.85).aspx