我有一个DLL,它使用内存映射文件在Windows (c++)中的多个进程之间提供数据共享。想要相互读/写数据的进程在DLL中注册它们的窗口句柄。当其中一个将数据放入共享中时,其他的就会收到通知。任何进程都可以通过DLL读取或写入数据。
我希望能够防止进程写入共享内存,直到通知完成,防止多个进程在同一时间写入,等等。感觉就像我需要一个"全局互斥",但有这样的事情吗?
谢谢。
使用"virtuallock" WinAPI函数
输入是映射的内存指针和映射的内存大小。
BOOL WINAPI VirtualLock(
_In_ LPVOID lpAddress,
_In_ SIZE_T dwSize
);
你有VirtualUnlock
解锁内存,只要你想(基于您的业务需求)
要了解更多信息,请参考winAPI文档
https://msdn.microsoft.com/en-us/library/windows/desktop/aa366895 (v = vs.85) . aspx