50 lines
1.2 KiB
C++
50 lines
1.2 KiB
C++
// Windows/FileMapping.h
|
|
|
|
#ifndef __WINDOWS_FILEMAPPING_H
|
|
#define __WINDOWS_FILEMAPPING_H
|
|
|
|
#include "Windows/Handle.h"
|
|
#include "Windows/Defs.h"
|
|
|
|
namespace NWindows {
|
|
// namespace NFile {
|
|
// namespace NMapping {
|
|
|
|
class CFileMapping: public CHandle
|
|
{
|
|
public:
|
|
bool Create(HANDLE file, LPSECURITY_ATTRIBUTES attributes,
|
|
DWORD protect, UINT64 maximumSize, LPCTSTR name)
|
|
{
|
|
_handle = ::CreateFileMapping(file, attributes,
|
|
protect, DWORD(maximumSize >> 32), DWORD(maximumSize), name);
|
|
return (_handle != NULL);
|
|
}
|
|
|
|
bool Open(DWORD desiredAccess, bool inheritHandle, LPCTSTR name)
|
|
{
|
|
_handle = ::OpenFileMapping(desiredAccess, BoolToBOOL(inheritHandle), name);
|
|
return (_handle != NULL);
|
|
}
|
|
|
|
LPVOID MapViewOfFile(DWORD desiredAccess, UINT64 fileOffset,
|
|
SIZE_T numberOfBytesToMap)
|
|
{
|
|
return ::MapViewOfFile(_handle, desiredAccess,
|
|
DWORD(fileOffset >> 32), DWORD(fileOffset), numberOfBytesToMap);
|
|
}
|
|
|
|
LPVOID MapViewOfFileEx(DWORD desiredAccess, UINT64 fileOffset,
|
|
SIZE_T numberOfBytesToMap, LPVOID baseAddress)
|
|
{
|
|
return ::MapViewOfFileEx(_handle, desiredAccess,
|
|
DWORD(fileOffset >> 32), DWORD(fileOffset),
|
|
numberOfBytesToMap, baseAddress);
|
|
}
|
|
|
|
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|