Upload 2.0.2
[physicsfs] / lzma / CPP / Windows / FileMapping.h
1 // Windows/FileMapping.h
2
3 #ifndef __WINDOWS_FILEMAPPING_H
4 #define __WINDOWS_FILEMAPPING_H
5
6 #include "Windows/Handle.h"
7 #include "Windows/Defs.h"
8
9 namespace NWindows {
10 // namespace NFile {
11 // namespace NMapping {
12
13 class CFileMapping: public CHandle
14 {
15 public:
16   bool Create(HANDLE file, LPSECURITY_ATTRIBUTES attributes,
17     DWORD protect, UINT64 maximumSize, LPCTSTR name)
18   {
19     _handle = ::CreateFileMapping(file, attributes,
20       protect, DWORD(maximumSize >> 32), DWORD(maximumSize), name);
21     return (_handle != NULL);
22   }
23
24   bool Open(DWORD desiredAccess, bool inheritHandle, LPCTSTR name)
25   {
26     _handle = ::OpenFileMapping(desiredAccess, BoolToBOOL(inheritHandle), name);
27     return (_handle != NULL);
28   }
29
30   LPVOID MapViewOfFile(DWORD desiredAccess, UINT64 fileOffset, 
31       SIZE_T numberOfBytesToMap)
32   {
33     return ::MapViewOfFile(_handle, desiredAccess, 
34         DWORD(fileOffset >> 32), DWORD(fileOffset), numberOfBytesToMap);
35   }
36
37   LPVOID MapViewOfFileEx(DWORD desiredAccess, UINT64 fileOffset, 
38       SIZE_T numberOfBytesToMap, LPVOID baseAddress)
39   {
40     return ::MapViewOfFileEx(_handle, desiredAccess, 
41       DWORD(fileOffset >> 32), DWORD(fileOffset), 
42       numberOfBytesToMap, baseAddress);
43   }
44   
45
46 };
47
48 }
49
50 #endif