CSharedFile是CMemFile
派生类,它支持共享的内存文件。内存文件的行为类似于
磁盘文件,但是文件是保存在RAM中而不是
磁盘上。在快速暂存或传输未加工字节时,或在独立进程之间使对象
串行化时,一个内存文件是很有用的。
简介
CSharedFile
共享内存文件与其它的内存文件不同,共享内存文件的内存是由GlobalAllocWindows函数分配的。CSharedFile类将数据保存在一个全局分配的内存块(用GlobalAlloc创建)中,并且这个内存块可以使用DDE,剪贴板,或其它OLE/COM统一数据传输操作(例如,使用IDataObject)来共享。
GlobalAlloc 返回一个HGLOBAL 句柄,而不是像malloc那样返回一个内存指针。在某些应用程序中需要HGLOBAL句柄。例如,要将数据放入剪贴板中,你就需要一个HGLOBAL句柄。
请注意,CSharedFile不使用
内存映射文件,并且数据不能在进程之间共享。CSharedFile对象可以自动分配它们自己的内存,或是你可以通过调用CSharedFile:: SetHandle来将你自己的内存块连接到CSharedFile对象上。不管是哪一种情况,如果nGrowBytes不为零,则用于增长内存文件的内存被自动按nGrowBytes-sized增量分配。
更多的信息,参见“Microsoft Visual C++ 6.0参考库”中的“Microsoft Visual C++6.0运行库参考手册”卷中的“文件处理”。
CSharedFile类成员
构造
操作
CSharedFile::CSharedFile
CSharedFile( UINT nAllocFlags = GMEM_DDESHARE | GMEM_MOVEABLE, UINT nGrowBytes = 4096 );
参数
说明:
此成员函数用来构造一个CSharedFile对象并为它分配内存。
请参阅:CSharedFile::Detach, CSharedFile::SetHandle
CSharedFile::Detach
HGLOBAL Detach( );
返回值:返回包含此内存文件内容的内存块的句柄。
说明:
此成员函数用来关闭内存文件并使它与内存块分离。你可以通过使用Detach返回的句柄来调用SetHandle来重新打开它。
CSharedFile::SetHandle
void SetHandle( HGLOBAL hGlobalMemory, BOOL bAllowGrow = TRUE );
参数:
说明:
此成员函数用来将一个全局内存块连接到CSharedFile对象上。如果bAllowGrow是非零值,则内存块按需要增长,例如,如果要写入此内存文件的字节数大于分配的内存块,则可以增长内存块。
参阅
CSharedFile::CSharedFile, CSharedFile::Detach