// 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);