我有一个DLL,它使用内存映射文件在Windows(C ++)中的多个进程之间提供数据共享。想要彼此读/写数据的进程使用DLL注册其窗口句柄。当其中一个将数据放入共享时,其他人会收到通知。任何进程都可以通过DLL读取或写入数据。
我希望能够阻止进程写入共享内存,直到通知完成,防止多个进程同时写入等等。感觉我需要一个"全局互斥",但是有这样的事吗?
感谢。
答案 0 :(得分:0)
使用" 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