-
-
[求助]共享内存通信句柄释放问题
-
发表于:
2015-3-11 00:04
9037
-
A,B两个进程通信,使用共享内存方式,A为读者,B为写者,我想知道如下两个函数
在两个进程中需要各调用一遍吗?
CloseHandle(m_hSystemObject);
UnmapViewOfFile(m_lpVoidSM);
我做的试验是只能在A中CloseHandle,否则A读取不到信息,UnmapViewOfFile这在AB调用没问题。
我的理解是
CloseHandle(m_hSystemObject);这里不能close,在EXE中close,因为是内核对象,在系统中是共用的一个映射,InfoShare4这个名字,虽然在两个进程中打开,但是返回值是一个即使名字不同,在这里关闭后再在exe里关闭,就关闭了两次,会产生错误。
m_hSystemObject = CreateFileMapping( (HANDLE)0xFFFFFFFF, &sa, PAGE_READWRITE, 0, m_dwSMLen, TEXT("InfoShare4") );
m_lpVoidSM = MapViewOfFile( m_hSystemObject, FILE_MAP_ALL_ACCESS, 0, 0, 0 );
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课