`
qwp57qwp
  • 浏览: 14310 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

内存映射文件相关函数使用及说明

阅读更多

内存映射文件相关函数使用及说明
2012年01月10日
  示例代码:
  //打开文件
  HANDLE hFile = ::CreateFileW(m_wstrFilePath.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
  if(INVALID_HANDLE_VALUE == hFile)
  {
  return false;
  }
  //生成文件映射句柄
  m_hFileMapping = ::CreateFileMappingW(hFile, NULL, PAGE_READONLY,  m_lnFileSize.HighPart, m_lnFileSize.LowPart, NULL);
  ::CloseHandle(hFile);
  if(NULL == m_hFileMapping)
  {
  return false;
  }
  //计算读取的数据大小
  m_lnFileMappingDataSize.QuadPart = m_lnFileSize.QuadPart - m_lnFileMappingDataPos.QuadPart;
  m_lnFileMappingDataSize.QuadPart = (MAX_FILE_MAPPING_SIZE 不能超过实际文件大小,否则返回错误;当高32位和低32位都输入0时,表示缺省文件大小)
  m_pbtFileMappingData = (PBYTE)::MapViewOfFile(m_hFileMapping, FILE_MAP_READ, m_lnFileMappingDataPos.HighPart, m_lnFileMappingDataPos.LowPart, m_lnFileMappingDataSize.LowPart);
  m_lnFileMappingDataPos.HighPart:读取文件位置的高32位
  m_lnFileMappingDataPos.LowPart:读取文件位置的低32位(此值必须是操作系统最小内存分配粒度的整数倍,windows为64k)
  m_lnFileMappingDataSize.LowPart:读取文件数据的大小,与存储系统的大小有关(建议不要超过2G)
分享到:
评论

相关推荐

    内存映射文件与虚拟内存有些类

    内存映射文件,是由一个文件到一块内存的映射。Win32提供了允许应用程序把...使用内存映射文件处理存储于磁盘上的文件时,将不必再对文件执行I/O操作,使得内存映射文件在处理大数据量的文件时能起到相当重要的作用。

    VC中用内存映射文件处理大文件

    文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类...目前,对于上述这种大文件的操作一般是以内存映射文件的方式来加以处理的,本文下面将针对这种Windows核心编程技术展开讨论。

    VC++中使用内存映射文件处理大文件

    文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类...目前,对于上述这种大文件的操作一般是以内存映射文件的方式来加以处理的,本文下面将针对这种Windows核心编程技术展开讨论。

    使用内存映射处理大文件

    文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处 理的函数和类...目前,对于上述这种大文件的操作一般是以内存映射文件的方式来加以处理的,本文下面将针对这种Windows核心编程技术展开讨论。

    一个多线程文件拷贝工具的实现(使用内存映射文件)

    一个多线程的文件拷贝工具的实现,文件操作接口使用了内存映射模型的方式实现,可以指定线程数量,可以在拷贝过程中查看整体的进度信息(进度、速度、剩余时间、已用时间),同时可以查看每个子线程对应的进度信息。...

    内存映射的封装 包含读、写文件

    本代码 完美封装 好用易懂. 已在自己的项目中使用很久 稳定无bug, 内存映射的好处就不说了 但如果直接使用API 过程很繁复.

    精选_内核内存映射文件之获取SSDT函数索引号_源码打包

    内核内存映射文件之获取SSDT函数索引号

    C++中使用内存映射文件处理大文件

    文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类...目前,对 于上述这种大文件的操作一般是以内存映射文件的方式来加以处理的,本文下面将针对这种Windows核心编程技术展开讨论。

    论文研究-基于内存映射文件技术快速绘制大场景流域模型.pdf

    在此基础上首先探讨了应用内存映射文件技术所用到的函数及其功能;接着分析了调用、存储大场景流域模型(大小约4 GB)所应用到的函数及其使用方法原理,并结合相关程序代码对具体的实现过程进行了详细的剖析;最后...

    多线程文件快速拷贝工具的实现(使用内存映射文件)

    一个多线程的文件快速拷贝工具的实现,文件操作接口使用了内存映射模型的方式实现,可以指定线程数量,可以在拷贝过程中查看整体的进度信息(进度、速度、剩余时间、已用时间),同时可以查看每个子线程对应的进度...

    trivial-mmap:一个提供易于使用的 API 来处理内存映射文件的库

    with-mmap-file一个帮助宏,可确保在我们完成内存映射文件后安全地取消映射(使用munmap-file函数)。 另外,下面是处理mmap-file函数返回的内存映射文件对象的谓词和访问器函数的导出符号: mmapped-file-p一个...

    C语言实现大数据文件的内存映射机制

    C语言实现大数据文件的内存映射机制 摘要 本文主要讲述大量数据的文件的...使用内存映射文件处理存储于磁盘上的文件时,将不必再对文件执行I/O操作,使得内存映射文件在处理大数据量的文件时能起到相当重要的作用。 2

    Python3 mmap内存映射文件示例解析

    1. mmap内存映射文件 建立一个文件的内存映射将使用操作系统虚拟内存来直接访问文件系统上的数据,而不是使用常规的I/O函数访问数据。内存映射通常可以提供I/O性能,因为使用内存映射是,不需要对每个访问都建立一个...

    Matlab 中更好的内存映射文件:更好、透明的 memmapfile,支持复数。-matlab开发

    另见http://dylan-muir.com/articles/mapped_tensor/ 如果此功能对您的学术工作有用,请引用该出版物代替谢谢: Muir 和 Kampa,... 这意味着使用 MappedTensor 的函数不能完全向量化,而必须在 for 循环内的段中对映射

    API之网络函数---整理网络函数及功能

    UnmapViewOfFile 在当前应用程序的内存地址空间解除对一个文件映射对象的映射 VerFindFile 用这个函数决定一个文件应安装到哪里 VerInstallFile 用这个函数安装一个文件 VerLanguageName 这个函数能根据16位语言...

    读取内核文件,获取原始SSDT

    自己读入windows内核文件,获取原始,可以restore SSDT

    evergreen:Java进程间持久性内存映射对象

    使用内存映射文件(MMF); 线程安全的Evergreen 对象; 当跨多个JVM(通过使用目标MMF上的锁定位)进行访问时,可以安全地读取/写入文件中的已保存实例。 低延迟(但我怀疑这与OpenHFT的编年史图没有任何距离)...

    MMFCodeInjection:通过内存映射文件进行代码注入

    通过利用文件映射,我们不必使用诸如VirtualAllocEx和WriteProcessMemory之类的各种功能即可将Shellcode复制到远程进程中,而是可以使用QueueUserAPC调用我们要引用的函数并在所需文件中执行Shellcode。

    C# .NET写的基于WinIO映射内存读取本地BIOS版本(含源码)

    C#通过WinIO读取BIOS的版本号 ...程序包里有自己封装好的函数库,里面有对WinIO的操作,使用起来比较简单 这支程序可直接使用,用于工厂测试产品烧录的BIOS版本号 提供了完整的源码,使用时加个自己公司的logo即可

    C语言编程中建立和解除内存映射的方法

    C语言mmap()函数:建立内存映射 头文件: #include <unistd> #include 定义函数:void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offsize); 函数说明:mmap()用来将某个文件内容...

Global site tag (gtag.js) - Google Analytics