用内存映射文件方法把整个文件映射到内存后却只能读出文件中的前面一部分数据,大虾请进!!!
请问这种情况是正常的吗,如何解决???偶是菜鸟,分数不够,请见谅!!
文件映射例程如下,其它例程中用lpData或加上偏移读数据的不同部分,结果缺只能读出其中前面一部分数据,实在难解,跪求大虾指点:
bool LDHandle::OpenLDHandle (const std::string filename)
{
m_hFile=CreateFile(filename.c_str (),GENERIC_READ,FILE_SHARE_READ,
NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(m_hFile==INVALID_HANDLE_VALUE)
{
throw exception("do not open Ld2 file");
}
m_hFileMap=CreateFileMapping(m_hFile,NULL,PAGE_READONLY,0,0,NULL);
if(m_hFileMap==INVALID_HANDLE_VALUE)
{
CloseHandle(m_hFile);
throw exception("file maping error");
}
//映射到整个文件
lpMemory=(BYTE*)MapViewOfFile(m_hFileMap,FILE_MAP_READ,0,0,0);
if(lpMemory==NULL)
{
CloseHandle(m_hFileMap);
CloseHandle(m_hFile);
throw exception("MapViewOfFile error");
}
//lpData指向数据区,LDHEADER是文件头结构
lpData=reinterpret_cast<WORD*>(lpMemory+sizeof(LDHEADER));
return true;
}