CSharedFile 類別
支援共用記憶體檔案的 CMemFile 衍生類別。
語法
class CSharedFile : public CMemFile
成員
公用建構函式
名稱 | 描述 |
---|---|
CSharedFile::CSharedFile | 建構 CSharedFile 物件。 |
公用方法
名稱 | 描述 |
---|---|
CSharedFile::D etach | 關閉共用記憶體檔案,並傳回其記憶體區塊的句柄。 |
CSharedFile::SetHandle | 將共用記憶體檔案附加至記憶體區塊。 |
備註
記憶體檔案的行為就像磁碟檔案。 差別在於,記憶體檔案會儲存在 RAM 中,而不是儲存在磁碟上。 記憶體檔案適用於快速暫存記憶體,或用於在獨立進程之間傳輸原始位元組或串行化物件。
共用記憶體檔案與其他記憶體檔案不同,因為該記憶體的記憶體會使用 GlobalAlloc Windows 函式來配置。 類別 CSharedFile
會將資料儲存在全域配置的記憶體區塊中(使用 GlobalAlloc
建立),而此記憶體區塊可以使用 DDE、剪貼簿或其他 OLE/COM 統一數據傳輸作業來共用,例如使用 IDataObject
。
GlobalAlloc
會傳回 HGLOBAL 句柄,而不是記憶體指標,例如 malloc 所傳回的指標。 某些應用程式中需要 HGLOBAL 句柄。 例如,若要將數據放在剪貼簿上,您需要 HGLOBAL 句柄。
CSharedFile
不會使用記憶體對應檔案,而且無法在進程之間直接共享數據。
CSharedFile
物件可以自動配置自己的記憶體。 或者,您可以呼叫 CSharedFile::SetHandle,將自己的記憶體區塊附加至 CSharedFile
物件。 不論是哪一種情況,如果nGrowBytes
不是零,會自動配置nGrowBytes
記憶體檔案的記憶體大小遞增。
如需詳細資訊,請參閱運行時間連結庫參考中的 MFC 中的檔案和檔案處理一文。
繼承階層架構
CSharedFile
需求
標頭: afxadv.h
CSharedFile::CSharedFile
CSharedFile
建構 物件併為其配置記憶體。
CSharedFile(
UINT nAllocFlags = GMEM_DDESHARE | GMEM_MOVEABLE,
UINT nGrowBytes = 4096);
參數
nAllocFlags
指出記憶體配置方式的旗標。 如需有效旗標值的清單,請參閱 GlobalAlloc 。
nGrowBytes
記憶體配置以位元組為單位遞增。
CSharedFile::D etach
呼叫此函式以關閉記憶體檔案,並將它與記憶體區塊中斷連結。
HGLOBAL Detach();
傳回值
包含記憶體檔案內容的記憶體區塊句柄。
備註
您可以使用 Detach 所傳回的句柄呼叫 SetHandle 來重新開啟它。
CSharedFile::SetHandle
呼叫此函式,將全域記憶體區塊附加至 CSharedFile
物件。
void SetHandle(
HGLOBAL hGlobalMemory,
BOOL bAllowGrow = TRUE);
參數
hGlobalMemory
要附加至 之全域記憶體的 CSharedFile
句柄。
bAllowGrow
指定是否允許記憶體區塊成長。
備註
如果 bAllowGrow 為非零,則記憶體區塊的大小會視需要增加,例如,如果您嘗試將更多的位元組寫入檔案,而不是記憶體區塊的大小。