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 中的文件和文件处理。
继承层次结构
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 不为零,则内存块的大小将根据需要(例如,如果尝试将超过内存块大小的更多字节写入文件)增加。