// TODO: Add extra validation here
//CDialog::OnOK();
CString filename;
HANDLE hNewFile=INVALID_HANDLE_VALUE;
HANDLE hMap=NULL;
HANDLE hlParam=NULL;
LPVOID lpBuffer=0;
filename = "g://test.txt";
CString ch="打开文件"+filename+"失败!";
try
{
HANDLE hNewFile=CreateFile(filename, GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,NULL);
if(hNewFile==INVALID_HANDLE_VALUE)
throw "创建文件失败!";
HANDLE hMap=CreateFileMapping(hNewFile,NULL,PAGE_READWRITE,0,0,NULL);
// 得到文件尺寸
DWORD dwFileSizeHigh;
__int64 qwFileSize = GetFileSize(hNewFile, &dwFileSizeHigh);
qwFileSize |= (((__int64)dwFileSizeHigh) << 32);
SYSTEM_INFO SysInfo;
GetSystemInfo(&SysInfo);
DWORD dwGran = SysInfo.dwAllocationGranularity;
// 关闭文件对象
//CloseHandle(hMap);
if(hMap==NULL)
throw "创建内存映射文件失败!";
DWORD dwBlockBytes = (DWORD)qwFileSize;
LPBYTE offset = (LPBYTE)MapViewOfFile(hMap,FILE_MAP_ALL_ACCESS,
0,0,dwBlockBytes);
DWORD err = ::GetLastError();
if(offset==NULL) {
throw "文件视图映射时失败!";
}else{
for(int i = 0;i < dwBlockBytes; i ++){
BYTE temp = *(offset + i);
int n = 0;
}
}
}
catch(char*ch)
{
AfxMessageBox(ch);
if(hMap!=NULL)
CloseHandle(hMap);
if(hNewFile!=INVALID_HANDLE_VALUE)
CloseHandle(hNewFile);
}
UnmapViewOfFile(hlParam);
//FlushViewOfFile(hlParam,0);
CloseHandle(hMap);
CloseHandle(hNewFile);