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 。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應