第1 4章 虚 拟 内 存

<这一章没啥,是说的几个内存相关的函数 >

14.1 系统信息

许多操作系统的值是根据主机而定的,比如页面的大小,分配粒度的大小等。这些值决不应该用硬编码的形式放入你的源代码。相反,你始终都应该在进程初始化的时候检索这些值,并在你的源代码中使用检索到的值。G e t S y s t e m I n f o函数将用于检索与主机相关的值:VOID WINAPI GetSystemInfo(_Out_ LPSYSTEM_INFO lpSystemInfo);

必须传递S Y S T E M _ I N F O结构的地址给这个函数。这个函数将初始化所有的结构成员然后返回。下面是S Y S T E M _ I N F O数据结构的样子。

当系统引导时,它要确定这些成员的值是什么。对于任何既定的系统来说,这些值总是相同的,因此决不需要为任何既定的进程多次调用该函数。由于有了 G e t S y s t e m I n f o函数,因此应用程序能够在运行的时候查询这些值。在该结构的所有成员中,只有 4个成员与内存有关。表1 4 - 1对这4个成员作了描述。

14.2 虚拟内存的状态

Wi n d o w s函数G l o b a l M e m o r y S t a t u s可用于检索关于当前内存状态的动态信息:

MEMORYSTATUS mst = {sizeof(mst)};

GlobalMemoryStatus(&mst);

我本机是16G内存,用上面的那个函数会出问题,得到的数据溢出了,超过4G内存的需要用下面的函数来获取内存状态信息。

MEMORYSTATUSEX mst2 = {sizeof(mst2)};

GlobalMemoryStatusEx(&mst2);

大致可以获取的内容是CPU使用率,计算机内存大小,虚拟内存大小等相关信息。

14.3 确定地址空间的状态

Wi n d o w s提供了一个函数,可以用来查询地址空间中内存地址的某些信息(如大小,存储器类型和保护属性等)。实际上本章后面显示的V M M a p示例应用程序就使用这个函数来生成第1 3章所附的虚拟内存表交换信息。这个函数称为Vi r t u a l Q u e r y:

Wi n d o w s还提供了另一个函数,它使一个进程能够查询另一个进程的内存信息:

这两个函数基本相同,差别在于使用 Vi r t u a l Q u e r y E x时,可以传递你想要查询的地址空间信息的进程的句柄。调试程序和其他实用程序使用这个函数最多,几乎所有的应用程序都只需要调用Vi r t u a l Q u e r y函数。当调用Vi r t u a l Q u e r y(E x)函数时,p v A d d r e s s参数必须包含你想要查询其信息的虚拟内存地址。 P m b i参数是你必须分配的M E M O RY _ B A S I C _ I N F O R M AT I O N结构的地址。该结构在Wi n N T. h文件中定义为下面的形式:

最后一个参数是 d w L e n g t h,用于设定 M E M O RY _ B A S I C _ I N F O R M AT I O N结构的大小。Vi r t u a l Q u e r y(E x)函数返回拷贝到缓存中的字节的数量。

根据在p v A d d r e s s参数中传递的地址,Vi r t u a l Q u e r y(E x)函数将关于共享相同状态、保护属性和类型的相邻页面的范围信息填入 M E M O RY _ B A S I C _ I N F O R M AT I O N结构中。表1 4 - 3描述了该结构的成员。

本章的剩余部分就是在说作者自己封装的一个函数VMQuery,可以更详细的获取内存信息。
    该结构的其他成员与内存管理毫无关系,为了完整起见,下面也对它们进行了介绍(见表1 4 - 2)。

Windows核心编程 第十四章 虚拟内存相关推荐

  1. [转]Windows Shell 编程 第十四章【来源:http://blog.csdn.net/wangqiulin123456/article/details/7988010】...

    第十四章 设计Shell集成应用 有一些工具可以使应用程序更紧密地与Shell和底层系统进行集成.也就是说,用户可以象处理系统文档和程序那样处理你的文档和程序.例如,右击文件来显示可用功能列表等.Wi ...

  2. Windows核心编程 第十五章 在应用程序中使用虚拟内存

    第1 5章 在应用程序中使用虚拟内存 Wi n d o w s提供了3种进行内存管理的方法,它们是: • 虚拟内存,最适合用来管理大型对象或结构数组. • 内存映射文件,最适合用来管理大型数据流(通常 ...

  3. Windows核心编程 第十九章 DLL基础

    第1 9章 D L L基础 这章是介绍基本dll,我就记录一些简单应用,dll的坑点以及扩展后面两章会说,到时候在总结. 自从M i c r o s o f t公司推出第一个版本的Wi n d o w ...

  4. Windows核心编程 第十二章 纤程

    第1 2章 纤 程 M i c r o s o f t公司给Wi n d o w s添加了一种纤程,以便能够非常容易地将现有的 U N I X服务器应用程序移植到Wi n d o w s中.U N I ...

  5. [笔记]Windows核心编程《十六》线程栈

    系列文章目录 [笔记]Windows核心编程<一>错误处理.字符编码 [笔记]Windows核心编程<二>内核对象 [笔记]Windows核心编程<三>进程 [笔记 ...

  6. [笔记]Windows核心编程《十九》DLL基础

    系列文章目录 [笔记]Windows核心编程<一>错误处理.字符编码 [笔记]Windows核心编程<二>内核对象 [笔记]Windows核心编程<三>进程 [笔记 ...

  7. [转]Windows Shell编程 第十五章【来源:http://blog.csdn.net/wangqiulin123456/article/details/7988016】...

    第十五章 SHELL扩展 谈到Windows Shell编程,Shell扩展是最重要的科目之一,绝大多数商业应用的最酷特征的都是通过Shell扩展实现的,而且有许多显著的系统特征实际都是插入了扩展代码 ...

  8. Windows Shell编程-第十六章.命名空间扩展

    第十六章 命名空间扩展 探测器使用层次结构表述形成系统的许多对象--文件,文件夹,打印机,网络对象等等.这些对象组合定义了一个命名空间,这是一个封闭的符号或名字集合,其中任何给定的符号或名字都能成功地 ...

  9. Windows核心编程:第14章 探索虚拟内存

    Github https://github.com/gongluck/Windows-Core-Program.git //第14章 探索虚拟内存.cpp: 定义应用程序的入口点. //#includ ...

最新文章

  1. 【hdu4281状态压缩+01背包+多旅行商问题】
  2. weblogic修改控制台ip_「Weblogic学习」Weblogic知识要点之JNDI/JTA编程开发
  3. screnc加密后文件不能执行_芯片加密后还能不能再次使用【详细介绍】
  4. 使用xfire webservice接口开发,obj与xml相互转换好用工具类,不需要写大量的转换代码,亲测可用
  5. c++调用python接口作用是_利用Boost::Python实现C++调用python接口
  6. 【报告分享】中国智慧金融行业洞察及2021年发展趋势研究报告.pdf(附下载链接)...
  7. 不再依赖A*,利用C++编写全新寻路算法
  8. python基础语法学习常见小问题
  9. jprofiler 9注册码
  10. 软件工程毕设项目 - 基于SSM的房屋租赁系统(含源码+论文)
  11. 【阿里图标库的使用】
  12. python http请求时gzip解压
  13. 百度搜索排名优化和SEO搜索引擎优化
  14. ORAN C平面 Section Type 6
  15. 信贷风控评分卡模型(上)_Give Me Some Credit(技术实现过程)
  16. 使用 VirtualBox 虚拟机在电脑上运行 Android 系统,让电脑变安卓平板!
  17. 浅谈Openstack网络原理(openstack无法上网?)
  18. pcf8574c语言测试程序,51单片机+PCF8574简易密码锁程序 带详细注释 1602显示
  19. 一分钟看懂Python中的 // 和 / 和 % 的用法区别
  20. 【html画板】网页画板绘画效果

热门文章

  1. 匹配中文字符的正则表达式: [/u4e00-/u9fa5]
  2. 一种结合混沌密码理论的彩色图象水印算法
  3. Dajngo admin使用
  4. 一篇深入剖析PCA的好文
  5. 解决:Unknown table engine 'InnoDB'
  6. Dell服务器相关操作
  7. [转载]Android: 如何实现ScrollView中含有ListView?
  8. [转]android-学习笔记之按钮事件
  9. 中国高校毕业生即将加速蓝领化
  10. Windows Phone7 -- ApplicationBar具体使用说明(设置显示迷你模式和背景半透明模式)...