内存映射文件——MapViewOfFile最后一个参数的问题
pkeel 2007-01-26 04:08:27 我将创建一个内存映射文件用来写入数据,为了省内存,我将这个内存映射对象分段映射,所以我在下面的函数传入一个n,n为要写入数据的BTYE大小,然后将MapViewOfFile函数的最后一个参数(用来传入要映射的字节大小),现在出现的问题是:如果n只有24的时候,就会出错。为什么啊?
VOID CFileMapping::FileWrite(BYTE* SrcPointer,DWORD n,DWORD FileStar)
{
DWORD dwSysGran; // system allocation granularity
SYSTEM_INFO SysInfo;
GetSystemInfo(&SysInfo);
dwSysGran = SysInfo.dwAllocationGranularity;
DWORD dwFileMapStart = (FileStar/ dwSysGran) * dwSysGran;
MapHeadAddress = MapViewOfFile(
hMapFile, // handle to mapping object
FILE_MAP_WRITE, // read
0, // high-order 32
dwFileMapStart, // low-order 32
n); // number of bytes to map
lpMapAddress=(BYTE*)MapHeadAddress+(FileStar%dwSysGran
::memcpy(lpMapAddress,SrcPointer,n);
UnmapViewOfFile(MapHeadAddress);
}