1 // Windows/FileMapping.h
3 #ifndef __WINDOWS_FILEMAPPING_H
4 #define __WINDOWS_FILEMAPPING_H
6 #include "Windows/Handle.h"
7 #include "Windows/Defs.h"
11 // namespace NMapping {
13 class CFileMapping: public CHandle
16 bool Create(HANDLE file, LPSECURITY_ATTRIBUTES attributes,
17 DWORD protect, UINT64 maximumSize, LPCTSTR name)
19 _handle = ::CreateFileMapping(file, attributes,
20 protect, DWORD(maximumSize >> 32), DWORD(maximumSize), name);
21 return (_handle != NULL);
24 bool Open(DWORD desiredAccess, bool inheritHandle, LPCTSTR name)
26 _handle = ::OpenFileMapping(desiredAccess, BoolToBOOL(inheritHandle), name);
27 return (_handle != NULL);
30 LPVOID MapViewOfFile(DWORD desiredAccess, UINT64 fileOffset,
31 SIZE_T numberOfBytesToMap)
33 return ::MapViewOfFile(_handle, desiredAccess,
34 DWORD(fileOffset >> 32), DWORD(fileOffset), numberOfBytesToMap);
37 LPVOID MapViewOfFileEx(DWORD desiredAccess, UINT64 fileOffset,
38 SIZE_T numberOfBytesToMap, LPVOID baseAddress)
40 return ::MapViewOfFileEx(_handle, desiredAccess,
41 DWORD(fileOffset >> 32), DWORD(fileOffset),
42 numberOfBytesToMap, baseAddress);