欢迎指正
// 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 需要导出
// 返回: