采用文件映射的方式基本步骤是这样
HANDLE hFile = CreateFile(pszFileName, GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE)
{
return ;
} DWORD dwFileSizeHi = 0,
dwFileSizeLo = GetFileSize(hFile, &dwFileSizeHi);
HANDLE hFileMap = CreateFileMapping(hFile, NULL, PAGE_READONLY,
dwFileSizeHi, dwFileSizeLo, NULL); if (hFileMap == NULL)
{
CloseHandle(hFile); return ;
} void *pAddress = MapViewOfFile(hFileMap, FILE_MAP_READ, 0, 0, 0); if (pAddress == NULL)
{
CloseHandle(hFileMap);
CloseHandle(hFile); return ;
}
// 你在这里就可以处理了pAddress 为缓冲区的首地址 UnmapViewOfFile(pAddress);
CloseHandle(hFileMap);
CloseHandle(hFile);
HANDLE hFile = CreateFile(pszFileName, GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE)
{
return ;
} DWORD dwFileSizeHi = 0,
dwFileSizeLo = GetFileSize(hFile, &dwFileSizeHi);
HANDLE hFileMap = CreateFileMapping(hFile, NULL, PAGE_READONLY,
dwFileSizeHi, dwFileSizeLo, NULL); if (hFileMap == NULL)
{
CloseHandle(hFile); return ;
} void *pAddress = MapViewOfFile(hFileMap, FILE_MAP_READ, 0, 0, 0); if (pAddress == NULL)
{
CloseHandle(hFileMap);
CloseHandle(hFile); return ;
}
// 你在这里就可以处理了pAddress 为缓冲区的首地址 UnmapViewOfFile(pAddress);
CloseHandle(hFileMap);
CloseHandle(hFile);
解决方案 »
- 如何在Grid Control中添加CheckComboBox
- 求助:请教一下,两条记录的中间插一条新记录
- 有谁用过网上的一个BMP文件转换为JPG的动态链接库吗?我只调用::LoadLibrary("jpgdll.dll");就不能再操作浮点数了
- vc2003(7.1)项目属性好多,在哪儿为exe指定dll查找路径?
- 几个简单的多线程问题?
- 怎样才能重载CSplitterWnd类阿??
- 关于局域网探测的问题!急!大家帮小弟一把吧!
- 有人把MFC的源码都看懂了么?
- vc向导中可以做三种DLL,请问这三种滴溜溜DLL有什么不同
- library is corrupt
- 采用unicode编码的文本怎么在编辑控件上显示啊?
- 【急,急,急,不知网上有没有朋友愿意帮我!!!!!】
我还想问一下,我要这样用文件映射,我有一个文件,里面有几个图片文件,几个图片是几个文件连在一个的,我用文件映射到内存里,然后分开成原来的文件,要这些文件独立出来用,你会吗?
谢谢你的回答