#include "stdafx.h"#include#includetypedefstruct__ListNode
{char data[10];struct __ListNode *pNext;
}ListNode,*pListNode;int main(int argc, char **argv)
{
LPCWSTR file= TEXT("test.txt");
HANDLE hFile= CreateFile( //创建或打开文件内核对象
file,
GENERIC_WRITE|GENERIC_READ,
FILE_SHARE_WRITE|FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);if (hFile ==INVALID_HANDLE_VALUE)
{return false;
}/*DWORD dwWriteSize;
pListNode curr; //当前节点指针
pListNode head; //首节点
head = NULL;
char temp2[20] = { 0 };
for (int i = 0; i<10; i++)
{
curr = (pListNode)malloc(sizeof(ListNode));
sprintf(temp2, "%.1d\n", i);
strcpy(curr->data, temp2);
curr->pNext = head;
head = curr;
}
pListNode s;
s = head;
wchar_t buff[2] = L"";
while (s)
{
DWORD size = MultiByteToWideChar(CP_ACP, 0, s->data, -1, NULL, 0);
wchar_t *temp1 = (wchar_t *)malloc(size*sizeof(wchar_t));
memset(temp1, 0, size*sizeof(wchar_t));
MultiByteToWideChar(CP_ACP, 0, s->data, -1, temp1, size);
WriteFile(hFile, temp1, sizeof(temp1), &dwWriteSize, NULL);
s = s->pNext;
}
/**/DWORD filesize=GetFileSize(hFile, NULL);//创建一个文件映射内核对象
HANDLE hMap = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, filesize, NULL);if (hMap ==INVALID_HANDLE_VALUE)
{return false;
}//将文件数据映射到进程的地址空间
LPSTR lpMapAddress = (LPSTR)MapViewOfFile(hMap, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, filesize);if (lpMapAddress ==NULL)
{
printf("MapView error!\n");return -1;
}else{int m = 0;
printf("----%d\n", filesize);while (true)
{if (m >filesize)
{break;
}if(lpMapAddress[m])
{
printf("%c\n", lpMapAddress[m]);
lpMapAddress[m]= 97;//可以更改文件的值
}
m++;
}
}
UnmapViewOfFile(lpMapAddress);
CloseHandle(hMap);
CloseHandle(hFile);return 0;
}