以文件为后背存储区的内存交换文件

admin 2018年5月11日05:10:48评论453 views字数 1153阅读3分50秒阅读模式
摘要

通过CreateFileMapping api 创建文件映射内核对象,在内存中申请空间(物理内存和虚拟内存)
通过MapViewOfFile 在响应的进程虚拟内存空间中预定对应空间,并且把上一步的内存映射到进程虚拟空间中。
这样就实现了共享内存


以文件为后背存储区的内存交换文件

各种后备存储器的内存映射文件

  • 磁盘中文件系统的具体文件为后备存储的页交换文件(文件映射)
  • 页交换文件("虚拟内存")为后备存储器的页交换文件(共享内存)

页交换文件("虚拟内存")

通过CreateFileMapping api 创建文件映射内核对象,在内存中申请空间(物理内存和虚拟内存)
通过MapViewOfFile 在响应的进程虚拟内存空间中预定对应空间,并且把上一步的内存映射到进程虚拟空间中。
这样就实现了共享内存

以文件为后背存储区的内存交换文件

具体磁盘文件

CreateFileMapping 直接映射文件到进程虚拟空间中

以文件为后背存储区的内存交换文件

映象类型的内存块和映射类型的内存块

映象类型的文件类型需要exe dll等文件
而映射类型则只要是打开的文件都可以。

以文件为后背存储区的内存交换文件

操作文件需要用到的api

//创建或打开指定文件的文件映射对象  HANDLE CreateFile (   LPCTSTR lpFileName,        // 文件路径   DWORD dwDesiredAccess,  // 访问权限   DWORD dwShareMode,        // 共享模式   LPSECURITY_ATTRIBUTES lpSecurityAttributes, // SD   DWORD dwCreationDisposition,     // 创建/打开方式   DWORD dwFlagsAndAttributes,      // 文件属性   HANDLE hTemplateFile            // 模板相关 );  //创建或打开指定文件的文件映射对象 HANDLE CreateFileMapping (     HANDLE hFile,                           // 要映射的文件句柄    LPSECURITY_ATTRIBUTES lpAttributes, // 安全属性     DWORD flProtect,                      // 保护属性     DWORD dwMaximumSizeHigh, // 映射区域最大大小高32位      DWORD dwMaximumSizeLow,  // 映射区域最大大小低32位     LPCTSTR lpName                      // 映射对象的名字 );  //创建映射 LPVOID MapViewOfFile (   HANDLE hFileMappingObject,// 文件映射对象句柄   DWORD dwDesiredAccess,    // 访问的保护属性  DWORD dwFileOffsetHigh,      // 映射的内容在文件中的偏移   DWORD dwFileOffsetLow,      // 映射的内容在文件中的偏移  类似于 offset   SIZE_T dwNumberOfBytesToMap  // 映射的文件内容大小  类似于 limit  );

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2018年5月11日05:10:48
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   以文件为后背存储区的内存交换文件https://cn-sec.com/archives/51306.html

发表评论

匿名网友 填写信息