Changeset 664 for trunk/src/kernel32/mmap.cpp
- Timestamp:
- Aug 24, 1999, 8:48:10 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/mmap.cpp
r657 r664 1 /* $Id: mmap.cpp,v 1. 7 1999-08-24 12:23:54sandervl Exp $ */1 /* $Id: mmap.cpp,v 1.8 1999-08-24 18:46:40 sandervl Exp $ */ 2 2 3 3 /* … … 36 36 //****************************************************************************** 37 37 Win32MemMap::Win32MemMap(HFILE hfile, ULONG size, ULONG fdwProtect, LPSTR lpszName) 38 : fMapped(FALSE), pMapping(NULL), mMapAccess(0) 38 : fMapped(FALSE), pMapping(NULL), mMapAccess(0), referenced(0) 39 39 { 40 40 globalmapMutex.enter(); … … 56 56 //****************************************************************************** 57 57 //****************************************************************************** 58 HANDLE Win32MemMap::Init()58 BOOL Win32MemMap::Init(HANDLE hMemMap) 59 59 { 60 60 mapMutex.enter(); … … 68 68 } 69 69 } 70 if(HMHandleAllocate(&hMemMap, (ULONG)this) != 0) 71 { 72 dprintf(("Win32MemMap::Init HMHandleAllocate failed!!")); 73 DebugInt3(); 74 goto fail; 75 } 76 mapMutex.leave(); 77 return hMemMap; 70 this->hMemMap = hMemMap; 71 mapMutex.leave(); 72 return TRUE; 78 73 fail: 79 74 mapMutex.leave(); 80 return 0;75 return FALSE; 81 76 } 82 77 //****************************************************************************** … … 84 79 Win32MemMap::~Win32MemMap() 85 80 { 86 unmap FileView();81 unmapViewOfFile(); 87 82 if(lpszMapName) { 88 83 free(lpszMapName); … … 120 115 //****************************************************************************** 121 116 //****************************************************************************** 122 BOOL Win32MemMap::unmap FileView()117 BOOL Win32MemMap::unmapViewOfFile() 123 118 { 124 119 if(fMapped == FALSE) … … 137 132 //****************************************************************************** 138 133 //****************************************************************************** 139 LPVOID Win32MemMap::map FileView(ULONG size, ULONG offset, ULONG fdwAccess)134 LPVOID Win32MemMap::mapViewOfFile(ULONG size, ULONG offset, ULONG fdwAccess) 140 135 { 141 136 mapMutex.enter(); 142 137 ULONG memFlags = (mProtFlags & (PAGE_READONLY | PAGE_READWRITE | PAGE_WRITECOPY)); 143 138 ULONG fAlloc = 0; 144 145 if(fdwAccess & FILE_MAP_WRITE && mProtFlags & (PAGE_READONLY|PAGE_WRITECOPY)) 146 goto parmfail; 147 if(fdwAccess & FILE_MAP_READ && mProtFlags & PAGE_WRITECOPY) 148 goto parmfail; 149 if(fdwAccess & FILE_MAP_ALL_ACCESS && mProtFlags & (PAGE_READONLY|PAGE_WRITECOPY)) 150 goto parmfail; 151 if(fdwAccess & FILE_MAP_COPY && mProtFlags & PAGE_WRITECOPY) 139 LPVOID mapview; 140 141 if(fdwAccess & (FILE_MAP_WRITE|FILE_MAP_ALL_ACCESS) && !(mProtFlags & PAGE_READWRITE)) 142 goto parmfail; 143 if(fdwAccess & FILE_MAP_READ && !(mProtFlags & (PAGE_READWRITE|PAGE_READONLY))) 144 goto parmfail; 145 if(fdwAccess & FILE_MAP_COPY && !(mProtFlags & PAGE_WRITECOPY)) 152 146 goto parmfail; 153 147 … … 157 151 fAlloc |= MEM_RESERVE; 158 152 159 pMapping = VirtualAlloc(0, mSize, fAlloc, memFlags); 160 if(pMapping == NULL) { 161 dprintf(("Win32MemMap::mapFileView: VirtualAlloc %x %x %x failed!", mSize, fAlloc, memFlags)); 162 goto fail; 163 } 164 mapMutex.leave(); 165 return pMapping; 153 if(fMapped == FALSE) {//if not mapped, reserve/commit entire view 154 pMapping = VirtualAlloc(0, mSize, fAlloc, mProtFlags); 155 if(pMapping == NULL) { 156 dprintf(("Win32MemMap::mapFileView: VirtualAlloc %x %x %x failed!", mSize, fAlloc, memFlags)); 157 goto fail; 158 } 159 fMapped = TRUE; 160 } 161 mapview = (LPVOID)((ULONG)pMapping + offset); 162 mapMutex.leave(); 163 return mapview; 166 164 167 165 parmfail:
Note:
See TracChangeset
for help on using the changeset viewer.