VC++里怎么样映射内存?如何访问? 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CreateFileMapping(), OpenFileMapping, MapViewOfFile, CloseHandle常用的几个API,看看MSDN吧,我用VC做过,在两个进程间通讯,用的就是内存映射,想要的话可以给你 也可以在DLL中开个共享内存,两个进程加载 下面是一个例子:void CreateHugeFile(LPCTSTR strFileName, long nFileLen){ HANDLE hFile; hFile = CreateFile( strFileName,//"C:\\Temp\\Test.dat", GENERIC_WRITE, //必须有此权限 0, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL); if( hFile == INVALID_HANDLE_VALUE ) { //处理出错信息 //获得信息 LPVOID lpMsgBuf; //Windows will allocate ::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,0, GetLastError(),MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), //默认语言 (LPTSTR)&lpMsgBuf, 0, NULL ); //显示 ::MessageBox(0, (LPCTSTR)lpMsgBuf, _T("GetLastError"), MB_OK|MB_ICONINFORMATION ); //lpMsgBuf中是你要的错误提示. //释放内存 ::LocalFree( lpMsgBuf ); return; } DWORD dwPtr = SetFilePointer( hFile, nFileLen,//0x02800000, // 200 M NULL, FILE_BEGIN); if (dwPtr == 0xFFFFFFFF) { // 处理出错信息 //获得信息 LPVOID lpMsgBuf; //Windows will allocate ::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,0, GetLastError(),MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), //默认语言 (LPTSTR)&lpMsgBuf, 0, NULL ); //显示 ::MessageBox(0, (LPCTSTR)lpMsgBuf, _T("GetLastError"), MB_OK|MB_ICONINFORMATION ); //lpMsgBuf中是你要的错误提示. //释放内存 ::LocalFree( lpMsgBuf ); return; } // End of error handler SetEndOfFile(hFile); CloseHandle(hFile);} 如何抓网页图片 使用LibUIDK创建一个新的窗口,如何点击主窗口的按扭然后显示出新建的窗口 基于文档类建立的局域网通信连接出现 Unsupported Variant Type错误 如何实现拖拽功能 100分请教, DLL问题 ======================= 程序运行报错,跳出已停止工作对话框 一個C++的小問題! 能给我一个《深入浅出 MFC》的完整源代码吗? 急急急,60分求搞定这个小错误 MFC程序变量的求教。 为什么着一段代码不能在客户区显示一个位图呢 新手问一个简单问题
常用的几个API,看看MSDN吧,我用VC做过,在两个进程间通讯,用的就是内存映射,想要的话可以给你
void CreateHugeFile(LPCTSTR strFileName, long nFileLen)
{
HANDLE hFile;
hFile = CreateFile(
strFileName,//"C:\\Temp\\Test.dat",
GENERIC_WRITE, //必须有此权限
0,
NULL,
CREATE_NEW,
FILE_ATTRIBUTE_NORMAL,
NULL); if( hFile == INVALID_HANDLE_VALUE )
{
//处理出错信息
//获得信息
LPVOID lpMsgBuf; //Windows will allocate
::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,0,
GetLastError(),MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), //默认语言
(LPTSTR)&lpMsgBuf, 0, NULL );
//显示
::MessageBox(0, (LPCTSTR)lpMsgBuf, _T("GetLastError"), MB_OK|MB_ICONINFORMATION );
//lpMsgBuf中是你要的错误提示.
//释放内存
::LocalFree( lpMsgBuf ); return;
}
DWORD dwPtr = SetFilePointer(
hFile,
nFileLen,//0x02800000, // 200 M
NULL,
FILE_BEGIN);
if (dwPtr == 0xFFFFFFFF)
{
// 处理出错信息
//获得信息
LPVOID lpMsgBuf; //Windows will allocate
::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,0,
GetLastError(),MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), //默认语言
(LPTSTR)&lpMsgBuf, 0, NULL );
//显示
::MessageBox(0, (LPCTSTR)lpMsgBuf, _T("GetLastError"), MB_OK|MB_ICONINFORMATION );
//lpMsgBuf中是你要的错误提示.
//释放内存
::LocalFree( lpMsgBuf ); return;
} // End of error handler
SetEndOfFile(hFile);
CloseHandle(hFile);
}