66.文件映射为内存进行操作

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<Windows.h>
 4 
 5 char path[256] = "kaifang.txt";
 6 
 7 void main()
 8 {
 9                               //路径,读写,    
10     HANDLE hfile = CreateFileA(path, GENERIC_READ | GENERIC_WRITE, 0, NULL,
11         OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);//打开一个文件
12 
13     //如果打开失败
14     if (hfile ==INVALID_HANDLE_VALUE)
15     {
16         printf("打开文件失败");
17         system("pause");
18     }
19     //获取文件大小
20     printf("
%d", GetFileSize(hfile,NULL));
21     //创建映射
22     HANDLE hmap = CreateFileMappingA(hfile, 
23         NULL, PAGE_READWRITE | SEC_COMMIT,//读写
24         0, 
25         GetFileSize(hfile, NULL) + 1,//文件大小多一位
26         NULL);
27     //判断是否映射失败
28     if (hmap==NULL)
29     {
30         printf("映射失败");
31         CloseHandle(hfile);
32         system("pause");
33     }
34     //创建一个指针,存储映射以后的首地址
35     PVOID pvfile = MapViewOfFile(hmap, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0);
36 
37     if (pvfile==NULL)
38     {
39         printf("指针映射失败");
40         CloseHandle(hfile);
41         CloseHandle(hmap);
42         system("pause");
43 
44     }
45 
46     puts("映射成功");
47     char *pstart = pvfile;//首地址
48     char *pend = pstart + GetFileSize(hfile, NULL);//结束地址
49     system("pause");
50     
51     char str[100] = "test test";
52     memcpy(pend, str, strlen(str));
53 
54 
55     system("pause");
56     UnmapViewOfFile(pvfile);//解除映射
57     CloseHandle(hmap);
58     system("pause");
59 
60 }
原文地址:https://www.cnblogs.com/xiaochi/p/8443408.html