CSharedFile 类

支持共享内存文件的 CMemFile 派生类。

语法

class CSharedFile : public CMemFile

成员

公共构造函数

名称 描述
CSharedFile::CSharedFile 构造 CSharedFile 对象。

公共方法

名称 描述
CSharedFile::Detach 关闭共享内存文件并返回其内存块的句柄。
CSharedFile::SetHandle 将共享内存文件附加到内存块。

注解

内存文件的行为类似于磁盘文件。 不同之处在于,内存文件存储在 RAM 中,而不是磁盘上。 对于快速临时存储或在独立进程之间传输原始字节或序列化对象,内存文件非常有用。

共享内存文件与其他内存文件不同,因为前者的内存是使用 GlobalAlloc Windows 函数分配的。 CSharedFile 类将数据存储在全局分配的内存块(使用 GlobalAlloc 创建)中,并且可以使用 DDE、剪贴板或其他 OLE/COM 统一数据传输操作(例如,使用 IDataObject)共享此内存块。

GlobalAlloc 返回 HGLOBAL 句柄,而不是指向内存的指针(例如由 malloc 返回的指针)。 某些应用程序中需要 HGLOBAL 句柄。 例如,若要将数据放在剪贴板上,则需要 HGLOBAL 句柄。

CSharedFile 不使用内存映射的文件,并且数据不能在进程之间直接共享。

CSharedFile 对象可自动分配自己的内存。 或者,你可调用 CSharedFile::SetHandle 将自己的内存块附加到 CSharedFile 对象。 无论是哪种情况,如果 nGrowBytes 不为零,都按 nGrowBytes 大小的增量分配用于自动扩展内容文件的内存。

有关详细信息,请参阅运行时库参考中的文章 MFC 中的文件文件处理

继承层次结构

CObject

CFile

CMemFile

CSharedFile

要求

标头:afxadv.h

CSharedFile::CSharedFile

构造一个 CSharedFile 对象并为其分配内存。

CSharedFile(
    UINT nAllocFlags = GMEM_DDESHARE | GMEM_MOVEABLE,
    UINT nGrowBytes = 4096);

参数

nAllocFlags
指示如何分配内存的标志。 有关有效标志值的列表,请参阅 GlobalAlloc

nGrowBytes
内存分配增量(以字节为单位)。

CSharedFile::Detach

调用此函数以关闭内存文件,并将其从内存块中分离出来。

HGLOBAL Detach();

返回值

包含内存文件内容的内存块的句柄。

备注

可通过使用由 Detach 返回的句柄调用 SetHandle 来重新打开它

CSharedFile::SetHandle

调用此函数以将全局内存块附加到 CSharedFile 对象。

void SetHandle(
    HGLOBAL hGlobalMemory,
    BOOL bAllowGrow = TRUE);

参数

hGlobalMemory
要附加到 CSharedFile 的全局内存的句柄。

bAllowGrow
指定是否允许内存块增长。

注解

如果 bAllowGrow 不为零,则内存块的大小将根据需要(例如,如果尝试将超过内存块大小的更多字节写入文件)增加

另请参阅

CMemFile 类
层次结构图
CMemFile 类