FileMapping.h 1.2 KB

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