重金请教MapViewOfFile失败的原因
王云飞 2005-12-22 11:15:25 小弟在使用内存映射技术进行进程间通信,进程A在每次发送数据的时候均执行如下过程,
映射已经使用CreateFileMapping创建好的内存映射文件到本进程的地址空间,
如果成功,则使用此地址,写入数据;如果不成功,则关闭内存映射文件的句柄,重新
创建之,并再次映射。
此段逻辑代码在某些机器上长时间运行无误,在有些机器上则会运行若干小时后发生映射
失败的情况,并在内存映射文件重新创建后,仍旧失败。
百思不得其解,请指教
运行环境:Windows 2K NTFS文件系统
buf_s_pri_p = MapViewOfFile(buf_s_pri, FILE_MAP_WRITE, 0, 0, 0);
if(buf_s_pri_p == NULL)
{
CloseHandle(buf_s_pri);
buf_s_pri = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, getSBufSize() * 1024, getSBufName());
if(buf_s_pri == NULL)
return false;
buf_s_pri_p = (Private_Buf*)MapViewOfFile(buf_s_pri, FILE_MAP_WRITE, 0, 0, 0);
if(buf_s_pri_p == NULL)
return false;
}