文件映射

一.文件映射步骤

1.1打开或创建文件      

       CreateFile()

   1.2创建内存映射

    HANDLE CreateFileMapping(文件句柄,安全属性,访问方式,

           文件大小的高32= 0,文件大小的低32,映射命名)

   1.3加载内存映射文件

    LPVOID MapViewOfFile(内存映射句柄,访问模式,偏移量高32,

       偏移量低32,映射字节数)

   1.4 卸载映射

    UnmapViewOfFile(卸载地址)

   1.5关闭句柄

    CloseHandle();//关闭映射句柄 以及文件

  

二.打开文件映射

2.1读取文件内容 

      HANDLE OpenFileMapping( //返回

       DWORD               dwDesiredAccess,    // 指定保护类型

       BOOL                  bIsInheritHandle,     // 返回的句柄是否可以被继承

       LPCSTR                lpName             // 创建对象时使用的名字

  2.2加载内存映射文件

    LPVOID MapViewOfFile(内存映射句柄,访问模式,偏移量高32,

       偏移量低32,映射字节数)

案例:

   HANDLE hMap = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, "DANNY" );

            CHAR *ps = (CHAR*)MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS,0, 64*1024, 0 );

            printf( "%s\n", ps );

            UnmapViewOfFile( ps );

            CloseHandle( hMap );

   HANDLE hFile = CreateFile( "c:/map.dat",GENERIC_READ|GENERIC_WRITE,

   FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL );

            HANDLE hMap = CreateFileMapping( hFile, NULL,PAGE_READWRITE, 0, 1024*1024, "DANNY" );

            CHAR *pszText = (CHAR*)MapViewOfFile( hMap, FILE_MAP_ALL_ACCESS, 0, 64*1024, 0 );

            strcpy( pszText, "ABCD" );

            printf( "%s\n", pszText );

            UnmapViewOfFile( pszText );

            getchar( );

            CloseHandle( hMap );//一旦关闭,就没了

            CloseHandle( hFile );

            return 0;

 内存映射原理参照https://blog.csdn.net/xiaobangkuaipao/article/details/76789545

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值