共用方式為


CAtlFileMappingBase 類別

這個類別代表記憶體對應的檔案。

重要

這個類別及其成員不能用於在Windows 執行階段中執行的應用程式。

語法

class CAtlFileMappingBase

成員

公用建構函式

名稱 描述
CAtlFileMappingBase::CAtlFileMappingBase 建構函式。
CAtlFileMappingBase::~CAtlFileMappingBase 解構函式。

公用方法

名稱 描述
CAtlFileMappingBase::CopyFrom 呼叫此方法以從檔案對應物件複製。
CAtlFileMappingBase::GetData 呼叫這個方法以從檔案對應物件取得資料。
CAtlFileMappingBase::GetHandle 呼叫此方法以傳回檔案控制代碼。
CAtlFileMappingBase::GetMappingSize 呼叫這個方法,從檔案對應物件取得對應大小。
CAtlFileMappingBase::MapFile 呼叫此方法以建立檔案對應物件。
CAtlFileMappingBase::MapSharedMem 呼叫此方法以建立檔案對應物件,以允許完整存取所有進程。
CAtlFileMappingBase::OpenMapping 呼叫這個方法,將控制碼傳回至檔案對應物件。
CAtlFileMappingBase::Unmap 呼叫此方法以取消對應檔案對應物件。

公用運算子

名稱 描述
CAtlFileMappingBase::operator = 將目前的檔案對應物件設定為另一個檔案對應物件。

備註

檔案對應是檔案內容與進程虛擬位址空間一部分的關聯。 這個類別提供建立檔案對應物件的方法,可讓程式輕鬆存取和共用資料。

如需詳細資訊,請參閱 Windows SDK 中的檔案對應

需求

標頭: atlfile.h

CAtlFileMappingBase::CAtlFileMappingBase

建構函式。

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

參數

orig
要複製以建立新物件的原始檔案對應物件。

備註

建立新的檔案對應物件,選擇性地使用現有的 物件。 仍然需要呼叫 CAtlFileMappingBase::MapFile 來開啟或建立特定檔案的檔案對應物件。

範例

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

解構函式。

~CAtlFileMappingBase() throw();

備註

釋放 類別配置的任何資源,並呼叫 CAtlFileMappingBase::Unmap 方法。

CAtlFileMappingBase::CopyFrom

呼叫此方法以從檔案對應物件複製。

HRESULT CopyFrom(CAtlFileMappingBase& orig) throw();

參數

orig
要複製的原始檔案對應物件。

傳回值

傳回成功時S_OK,或在失敗時傳回錯誤 HRESULT。

CAtlFileMappingBase::GetData

呼叫這個方法以從檔案對應物件取得資料。

void* GetData() const throw();

傳回值

傳回資料的指標。

CAtlFileMappingBase::GetHandle

呼叫這個方法,將控制碼傳回至檔案對應物件。

HANDLE GetHandle() throw ();

傳回值

傳回檔案對應物件的控制碼。

CAtlFileMappingBase::GetMappingSize

呼叫這個方法,從檔案對應物件取得對應大小。

SIZE_T GetMappingSize() throw();

傳回值

傳回對應大小。

範例

請參閱 CAtlFileMappingBase::CAtlFileMappingBase 的範例

CAtlFileMappingBase::MapFile

呼叫這個方法,以開啟或建立指定檔案的檔案對應物件。

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

參數

hFile
要從中建立對應物件的檔案控制碼。 hFile 必須有效,且無法設定為 INVALID_HANDLE_VALUE。

nMappingSize
對應大小。 如果為 0,則檔案對應物件的大小上限等於 hFile 所 識別的檔案目前大小。

nOffset
要開始對應的檔案位移。 位移值必須是系統記憶體配置細微性的倍數。

dwMappingProtection
對應檔案時,檔案檢視所需的保護。 請參閱 Windows SDK 中 CreateFileMapping 中的 flProtect

dwViewDesiredAccess
指定檔案檢視的存取類型,因此,保護檔案所對應的頁面。 請參閱 Windows SDK 中的 MapViewOfFileEx 中的 dwDesiredAccess

傳回值

傳回成功時S_OK,或在失敗時傳回錯誤 HRESULT。

備註

建立檔案對應物件之後,檔案的大小不得超過檔案對應物件的大小;如果這樣做,則並非所有檔案的內容都可供共用。 如需詳細資訊,請參閱 Windows SDK 中的 CreateFileMapping MapViewOfFileEx

範例

請參閱 CAtlFileMappingBase::CAtlFileMappingBase 的範例

CAtlFileMappingBase::MapSharedMem

呼叫此方法以建立檔案對應物件,以允許完整存取所有進程。

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();

參數

nMappingSize
對應大小。 如果為 0,則檔案對應物件的大小上限等於 szName 識別之檔案對應物件的目前大小。

szName
對應物件的名稱。

pbAlreadyExisted
指向 BOOL 值,如果對應物件已經存在,則會設定為 TRUE。

lpsa
結構的指標 SECURITY_ATTRIBUTES ,決定傳回的控制碼是否可以由子進程繼承。 請參閱 Windows SDK 中的 CreateFileMapping 中的 lpAttributes

dwMappingProtection
對應檔案時,檔案檢視所需的保護。 請參閱 Windows SDK 中的 flProtect CreateFileMapping

dwViewDesiredAccess
指定檔案檢視的存取類型,因此,保護檔案所對應的頁面。 請參閱 Windows SDK 中的 MapViewOfFileEx 中的 dwDesiredAccess

傳回值

傳回成功時S_OK,或在失敗時傳回錯誤 HRESULT。

備註

MapShareMem可讓 CreateFileMapping 建立 的現有檔案對應物件在進程之間共用。

CAtlFileMappingBase::OpenMapping

呼叫這個方法,以開啟指定檔案的具名檔案對應物件。

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

參數

szName
對應物件的名稱。 如果依這個名稱開啟檔案對應物件的控制碼,而且對應物件上的安全性描述項不會與 dwViewDesiredAccess 參數衝突,則開啟作業會成功。

nMappingSize
對應大小。 如果為 0,則檔案對應物件的大小上限等於 szName 識別之檔案對應物件的目前大小。

nOffset
要開始對應的檔案位移。 位移值必須是系統記憶體配置細微性的倍數。

dwViewDesiredAccess
指定檔案檢視的存取類型,因此,保護檔案所對應的頁面。 請參閱 Windows SDK 中的 MapViewOfFileEx 中的 dwDesiredAccess

傳回值

傳回成功時S_OK,或在失敗時傳回錯誤 HRESULT。

備註

在偵錯組建中,如果輸入參數無效,就會發生判斷提示錯誤。

CAtlFileMappingBase::operator =

將目前的檔案對應物件設定為另一個檔案對應物件。

CAtlFileMappingBase& operator=(CAtlFileMappingBase& orig);

參數

orig
目前的檔案對應物件。

傳回值

傳回目前 物件的參考。

CAtlFileMappingBase::Unmap

呼叫此方法以取消對應檔案對應物件。

HRESULT Unmap() throw();

傳回值

傳回成功時S_OK,或在失敗時傳回錯誤 HRESULT。

備註

如需詳細資訊,請參閱 Windows SDK 中的 UnmapViewOfFile

另請參閱

CAtlFileMapping 類別
類別概觀