首先文件映射比普通传输文件要在读取过程中效率更好。
定义:文件映射指的是一个文件到内存的映射,映射即一一对应,我的理解就是一个文件的虚拟地址到内存地址上的映射
基本函数:
CreateFile():创建文件
有七个参数 第一个参数为创建文件的路径
CreateFileMapping(1,2,3,4,5,6):创建一个文件映射
HANDLE WINAPI CreateFileMapping( _In_ HANDLE hFile, _In_opt_ LPSECURITY_ATTRIBUTES lpAttributes, _In_ DWORD flProtect, _In_ DWORD dwMaximumSizeHigh,//高位文件的大小 _In_ DWORD dwMaximumSizeLow,//低位文件的大小 _In_opt_ LPCTSTR lpName );
返回值是一个HANDLE句柄
参数1:hFile指定了待映射到进程地址空间的文件句柄
参数2:
参数3:安全设置 通常设置为NULL
MapViewOfFile():将文件映射到进程的地址空间
LPVOID WINAPI MapViewOfFile( _In_ HANDLE hFileMappingObject, _In_ DWORD dwDesiredAccess, _In_ DWORD dwFileOffsetHigh, _In_ DWORD dwFileOffsetLow, _In_ SIZE_T dwNumberOfBytesToMap );
参数1:CreateFileMapping()的返回值HANDLE
参数2:权限 通常用 FILE_MAP_ALL_ACCESS 表示所有权限
参数5:所映射文件的大小
UnmapViewOfFile()取消文件映射
参数:一个指针指向MapViewOfFile()的地址( 类型不一致可以强转)
memcpy(1,2,3):内存拷贝 即从需要拷贝的内存地址的起始位置开始 拷贝n个字节到 指定的目标内存地址的起始位置
参数1:目标地址
参数2:源地址(需要拷贝的内容)
参数3:需要拷贝的字节的大小
注:内存拷贝与字符串strcpy_s不同 内存拷贝可以拷贝多种格式 比如.exe 等