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 中的 flProtectCreateFileMapping
。
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 。