写入数据:
typedef struct tagData
{
int n;
float f;
char c;
}DATA,*PDATA;
#define FILE_SIZE sizeof(DATA)
#define FILE_MAPPING_NAME "FileMappingName"
void main(int argc,TCHAR*argv[])
{
HANDLE hFile = CreateFile("D://text.txt",GENERIC_WRITE|GENERIC_READ,FILE_SHARE_READ|FILE_MAP_WRITE,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if(INVALID_HANDLE_VALUE == hFile)
return;
HANDLE hFileMapping = CreateFileMapping(hFile,NULL,PAGE_READWRITE,0,FILE_SIZE,FILE_MAPPING_NAME);
if(NULL == hFileMapping)
return;
LPVOID lpMem = MapViewOfFile(hFileMapping,FILE_MAP_ALL_ACCESS,0,0,FILE_SIZE);
if(NULL == lpMem)
return;
//2个的此处不同 写入
memset(lpMem,0,FILE_SIZE);
PDATA pData = (PDATA)lpMem;
pData->n = 10;
pData->f = 100.001;
pData->c = 'g';
//2个的此处不同 写入
if(!UnmapViewOfFile(lpMem))
return;
CloseHandle(hFileMapping);
CloseHandle(hFile);
cout<<"succeed"<<endl;
}
读取数据:
typedef struct tagData
{
int n;
float f;
char c;
}DATA,*PDATA;
#define FILE_SIZE sizeof(DATA)
#define FILE_MAPPING_NAME "FileMappingName"
void main(int argc,TCHAR*argv[])
{
HANDLE hFile = CreateFile("D://text.txt",GENERIC_WRITE|GENERIC_READ,FILE_SHARE_READ|FILE_MAP_WRITE,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if(INVALID_HANDLE_VALUE == hFile)
return;
HANDLE hFileMapping = CreateFileMapping(hFile,NULL,PAGE_READWRITE,0,FILE_SIZE,FILE_MAPPING_NAME);
if(NULL == hFileMapping)
return;
LPVOID lpMem = MapViewOfFile(hFileMapping,FILE_MAP_ALL_ACCESS,0,0,FILE_SIZE);
if(NULL == lpMem)
return;
//2个的此处不同 读取
PDATA pData = (PDATA)lpMem;
cout<<pData->n<<endl;
cout<<pData->f<<endl;
cout<<pData->c<<endl;
//2个的此处不同 读取
if(!UnmapViewOfFile(lpMem))
return;
CloseHandle(hFileMapping);
CloseHandle(hFile);
cout<<"succeed"<<endl;
}