FileMapping用户类源代码(原创, 欢迎批评指正)

本文档提供了一个名为UC_FILEMAPPING的内存映射文件用户类的源代码,用于进程间的内存共享。类中包含打开、关闭、读取、写入等关键功能,实现文件的高效访问。通过定义不同的返回值、结构体和函数,该类能够管理和操作内存映射文件,支持错误检查和文件操作同步。
摘要由CSDN通过智能技术生成

欢迎指正

// uc_filemapping.h: interface for the UC_FILEMAPPING class.
//
//

#if !defined(AFX_UC_FILEMAPPING_H__72FE31B2_7B02_442F_A754_66427E1C5946__INCLUDED_)
#define AFX_UC_FILEMAPPING_H__72FE31B2_7B02_442F_A754_66427E1C5946__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

//
// 模块: 内存映射文件用户类
// 作者: 张旻
// 创建: 2002.01.16
// 说明:
//   利用内存映射文件进行进程之间的内存共享,
//   目前的32位应用程序寻址范围4GB, 不需要高位
//
#include "uc_log.h"

//自定义返回值
#define RET_FILEOPENNED  RET_USER + 1  //文件已经打开
#define RET_FILENOTOPENNED RET_USER + 2  //文件未打开
#define RET_BUFFERTOOBIG RET_USER + 3  //缓冲区过大
#define RET_BUFFEROVERFLOW RET_USER + 4  //缓冲区溢出
#define RET_FILEPROCESSING RET_USER + 5  //文件正在操作
#define RET_OFFSETOVERFLOW RET_USER + 6  //偏移量溢出

//共享内存的预留长度信息结构预定义
typedef struct tagMapInfo{

 DWORD  dwSizeHigh;     //高位文件大小
 DWORD  dwSizeLow;     //低位文件大小

 DWORD  dwSizeUsedHigh;    //高位使用大小
 DWORD  dwSizeUsedLow;    //低位使用大小

 char  szMappingName[_MAX_PATH]; //映射名称

 tagMapInfo()
 {
  dwSizeHigh = dwSizeLow = dwSizeUsedHigh = dwSizeUsedLow = 0;
  memset( szMappingName, 0, _MAX_PATH );
 }

}US_MAPINFO, *PUS_MAPINFO;

//分页门限
#define HIGH_MAX  0xFFFFFFFE      //高位最大值
#define LOW_MAX   0xFFFFFFFF - sizeof(US_MAPINFO) //低位最大值
#define INFO_LEN  sizeof(US_MAPINFO)    //头信息长度
#define NOPHYSICALFILE 0xFFFFFFFF      //不需要物理文件

class UC_FILEMAPPING : public UC_LOG 
{
public:
 //
 // 作者: 张旻
 // 创建: 2002.01.16
 // 功能: 获得文件使用大小
 // 参数:
 // 返回:
 //   文件使用大小
 //
 DWORD GetSizeUsed();
 //
 // 作者: 张旻
 // 创建: 2002.01.16
 // 功能: 获得文件大小
 // 参数:
 // 返回:
 //   文件大小
 //
 DWORD GetSize();
 //
 // 作者: 张旻
 // 创建: 2002.01.16
 // 功能: 写入映射文件
 // 参数:
 //   [in]  lpBuf   缓冲区
 //   [in]  nSize   缓冲区大小
 //   [in]  dwOffsetLow  偏移地址地位
 //   [in]  isAppend  追加写入
 // 返回:
 //   RET_BADARG     参数非法
 //   RET_BUFFERTOBIG   缓存区过大
 //   RET_BUFFEROVERFLOW   缓冲区溢出
 //   RET_FILENOTOPENNED   文件未打开
 //   RET_FILEPROCESSING   文件正在操作
 //   RET_FILEERR    文件操作失败
 //   RET_OK      操作成功
 //
 DWORD Write( LPVOID lpBuf, UINT &nSize, DWORD dwOffsetLow=0, BOOL isAppend=TRUE );
 //
 // 作者: 张旻
 // 创建: 2002.01.16
 // 功能: 读取映射文件
 // 参数:
 //   [in]  lpBuf   缓冲区
 //   [in]  nSize   缓冲区大小
 //   [in]  dwOffsetLow  偏移地址地位
 // 返回:
 //   RET_BADARG     参数非法
 //   RET_BUFFERTOBIG   缓存区过大
 //   RET_BUFFEROVERFLOW   缓冲区溢出
 //   RET_FILENOTOPENNED   文件未打开
 //   RET_FILEPROCESSING   文件正在操作
 //   RET_FILEERR    文件操作失败
 //   RET_OK      操作成功
 //
 DWORD Read( LPVOID lpszBuf, UINT &nSize, DWORD dwOffsetLow=0 );
 //
 // 作者: 张旻
 // 创建: 2002.01.16
 // 功能: 关闭映射文件
 // 参数:
 //   [in]  wantDump  需要导出
 // 返回:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值