Redigera

Dela via


CAtlFileMappingBase Class

This class represents a memory-mapped file.

Important

This class and its members cannot be used in applications that execute in the Windows Runtime.

Syntax

class CAtlFileMappingBase

Members

Public Constructors

Name Description
CAtlFileMappingBase::CAtlFileMappingBase The constructor.
CAtlFileMappingBase::~CAtlFileMappingBase The destructor.

Public Methods

Name Description
CAtlFileMappingBase::CopyFrom Call this method to copy from a file-mapping object.
CAtlFileMappingBase::GetData Call this method to get the data from a file-mapping object.
CAtlFileMappingBase::GetHandle Call this method to return the file handle.
CAtlFileMappingBase::GetMappingSize Call this method to get the mapping size from a file-mapping object.
CAtlFileMappingBase::MapFile Call this method to create a file-mapping object.
CAtlFileMappingBase::MapSharedMem Call this method to create a file-mapping object that permits full access to all processes.
CAtlFileMappingBase::OpenMapping Call this method to return a handle to the file-mapping object.
CAtlFileMappingBase::Unmap Call this method to unmap a file-mapping object.

Public Operators

Name Description
CAtlFileMappingBase::operator = Sets the current file-mapping object to another file-mapping object.

Remarks

File mapping is the association of a file's contents with a portion of the virtual address space of a process. This class provides methods for creating file-mapping objects that permit programs to easily access and share data.

For more information, see File Mapping in the Windows SDK.

Requirements

Header: atlfile.h

CAtlFileMappingBase::CAtlFileMappingBase

The constructor.

CAtlFileMappingBase(CAtlFileMappingBase& orig);
CAtlFileMappingBase() throw();

Parameters

orig
The original file-mapping object to copy to create the new object.

Remarks

Creates a new file-mapping object, optionally using an existing object. It is still necessary to call CAtlFileMappingBase::MapFile to open or create the file-mapping object for a particular file.

Example

int OpenMyFileMap()
{
   // Create the file-mapping object.
   CAtlFileMappingBase myFileMap;

   // Create a file.
   CAtlFile myFile;
   myFile.Create(_T("myMapTestFile"),
      GENERIC_READ|GENERIC_WRITE|STANDARD_RIGHTS_ALL,
      FILE_SHARE_READ|FILE_SHARE_WRITE,
      OPEN_ALWAYS);

   // The file handle.
   HANDLE hFile = (HANDLE)myFile;

   // Test the file has opened successfully.
   ATLASSERT(hFile != INVALID_HANDLE_VALUE);

   // Open the file for file-mapping.
   // Must give a size as the file is zero by default.
   if (myFileMap.MapFile(hFile,
      1024,
      0,
      PAGE_READWRITE,
      FILE_MAP_READ) != S_OK)
   {
      CloseHandle(hFile);
      return 0;
   }

   // Confirm the size of the mapping file.
   ATLASSERT(myFileMap.GetMappingSize() == 1024);

   // Now the file-mapping object is open, a second
   // process could access the filemap object to exchange
   // data.

   return 0;
}

CAtlFileMappingBase::~CAtlFileMappingBase

The destructor.

~CAtlFileMappingBase() throw();

Remarks

Frees any resources allocated by the class and calls the CAtlFileMappingBase::Unmap method.

CAtlFileMappingBase::CopyFrom

Call this method to copy from a file-mapping object.

HRESULT CopyFrom(CAtlFileMappingBase& orig) throw();

Parameters

orig
The original file-mapping object to copy from.

Return Value

Returns S_OK on success, or an error HRESULT on failure.

CAtlFileMappingBase::GetData

Call this method to get the data from a file-mapping object.

void* GetData() const throw();

Return Value

Returns a pointer to the data.

CAtlFileMappingBase::GetHandle

Call this method to return a handle to the file-mapping object.

HANDLE GetHandle() throw ();

Return Value

Returns a handle to the file-mapping object.

CAtlFileMappingBase::GetMappingSize

Call this method to get the mapping size from a file-mapping object.

SIZE_T GetMappingSize() throw();

Return Value

Returns the mapping size.

Example

See the example for CAtlFileMappingBase::CAtlFileMappingBase.

CAtlFileMappingBase::MapFile

Call this method to open or create a file-mapping object for the specified file.

HRESULT MapFile(
    HANDLE hFile,
    SIZE_T nMappingSize = 0,
    ULONGLONG nOffset = 0,
    DWORD dwMappingProtection = PAGE_READONLY,
    DWORD dwViewDesiredAccess = FILE_MAP_READ) throw();

Parameters

hFile
Handle to the file from which to create a mapping object. hFile must be valid and cannot be set to INVALID_HANDLE_VALUE.

nMappingSize
The mapping size. If 0, the maximum size of the file-mapping object is equal to the current size of the file identified by hFile.

nOffset
The file offset where mapping is to begin. The offset value must be a multiple of the system's memory allocation granularity.

dwMappingProtection
The protection desired for the file view when the file is mapped. See flProtect in CreateFileMapping in the Windows SDK.

dwViewDesiredAccess
Specifies the type of access to the file view and, therefore, the protection of the pages mapped by the file. See dwDesiredAccess in MapViewOfFileEx in the Windows SDK.

Return Value

Returns S_OK on success, or an error HRESULT on failure.

Remarks

After a file-mapping object has been created, the size of the file must not exceed the size of the file-mapping object; if it does, not all of the file's contents will be available for sharing. For more details, see CreateFileMapping and MapViewOfFileEx in the Windows SDK.

Example

See the example for CAtlFileMappingBase::CAtlFileMappingBase.

CAtlFileMappingBase::MapSharedMem

Call this method to create a file-mapping object that permits full access to all processes.

HRESULT MapSharedMem(
    SIZE_T nMappingSize,
    LPCTSTR szName,
    BOOL* pbAlreadyExisted = NULL,
    LPSECURITY_ATTRIBUTES lpsa = NULL,
    DWORD dwMappingProtection = PAGE_READWRITE,
    DWORD dwViewDesiredAccess = FILE_MAP_ALL_ACCESS) throw();

Parameters

nMappingSize
The mapping size. If 0, the maximum size of the file-mapping object is equal to the current size of the file-mapping object identified by szName.

szName
The name of the mapping object.

pbAlreadyExisted
Points to a BOOL value that is set to TRUE if the mapping object already existed.

lpsa
The pointer to a SECURITY_ATTRIBUTES structure that determines whether the returned handle can be inherited by child processes. See lpAttributes in CreateFileMapping in the Windows SDK.

dwMappingProtection
The protection desired for the file view, when the file is mapped. See flProtect in CreateFileMapping in the Windows SDK.

dwViewDesiredAccess
Specifies the type of access to the file view and, therefore, the protection of the pages mapped by the file. See dwDesiredAccess in MapViewOfFileEx in the Windows SDK.

Return Value

Returns S_OK on success, or an error HRESULT on failure.

Remarks

MapShareMem allows an existing file-mapping object, created by CreateFileMapping, to be shared between processes.

CAtlFileMappingBase::OpenMapping

Call this method to open a named file-mapping object for the specified file.

HRESULT OpenMapping(
    LPCTSTR szName,
    SIZE_T nMappingSize,
    ULONGLONG nOffset = 0,
    DWORD dwViewDesiredAccess = FILE_MAP_ALL_ACCESS) throw();

Parameters

szName
The name of the mapping object. If there is an open handle to a file-mapping object by this name and the security descriptor on the mapping object does not conflict with the dwViewDesiredAccess parameter, the open operation succeeds.

nMappingSize
The mapping size. If 0, the maximum size of the file-mapping object is equal to the current size of the file-mapping object identified by szName.

nOffset
The file offset where mapping is to begin. The offset value must be a multiple of the system's memory allocation granularity.

dwViewDesiredAccess
Specifies the type of access to the file view and, therefore, the protection of the pages mapped by the file. See dwDesiredAccess in MapViewOfFileEx in the Windows SDK.

Return Value

Returns S_OK on success, or an error HRESULT on failure.

Remarks

In debug builds, an assertion error will occur if the input parameters are invalid.

CAtlFileMappingBase::operator =

Sets the current file-mapping object to another file-mapping object.

CAtlFileMappingBase& operator=(CAtlFileMappingBase& orig);

Parameters

orig
The current file-mapping object.

Return Value

Returns a reference to the current object.

CAtlFileMappingBase::Unmap

Call this method to unmap a file-mapping object.

HRESULT Unmap() throw();

Return Value

Returns S_OK on success, or an error HRESULT on failure.

Remarks

See UnmapViewOfFile in the Windows SDK for more details.

See also

CAtlFileMapping Class
Class Overview