如下的代码,当要映谢的文件到达七八百M或更大的时候,就有错了。我想一次性把文件的内容全部映谢进地址空间里,但文件还没超过1G,就有错了。安理说,自己的地址空间有4G,能用的也至少有两G,可为什么出错呢? hFile2=CreateFile((LPCTSTR)file2.GetBuffer(0),
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
CREATE_NEW,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(hFile2==INVALID_HANDLE_VALUE)
{
AfxMessageBox("分割文件失败55!");
CloseHandle(hFile2);
return;
}
hMap=CreateFileMapping(hFile,NULL,PAGE_READONLY,0,0,NULL);
if(hMap==NULL)
{
AfxMessageBox("分割文件失败66!");
CloseHandle(hFile);
CloseHandle(hMap);
return;
}
CloseHandle(hFile);
bp=(byte*)MapViewOfFile(hMap,FILE_MAP_READ,0,0,0);
if(bp==NULL)
{
AfxMessageBox("分割文件失败77!");
CloseHandle(hMap);
return;
}
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
CREATE_NEW,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(hFile2==INVALID_HANDLE_VALUE)
{
AfxMessageBox("分割文件失败55!");
CloseHandle(hFile2);
return;
}
hMap=CreateFileMapping(hFile,NULL,PAGE_READONLY,0,0,NULL);
if(hMap==NULL)
{
AfxMessageBox("分割文件失败66!");
CloseHandle(hFile);
CloseHandle(hMap);
return;
}
CloseHandle(hFile);
bp=(byte*)MapViewOfFile(hMap,FILE_MAP_READ,0,0,0);
if(bp==NULL)
{
AfxMessageBox("分割文件失败77!");
CloseHandle(hMap);
return;
}
错误代码为8就表示 Not enough storage is available to process this command就是没有足够的空间完成本项操作,4楼说的有理