Github

https://github.com/gongluck/Windows-Core-Program.git

//第14章 探索虚拟内存.cpp: 定义应用程序的入口点。
//#include "stdafx.h"
#include "第14章 探索虚拟内存.h"int APIENTRY wWinMain(_In_ HINSTANCE hInstance,_In_opt_ HINSTANCE hPrevInstance,_In_ LPWSTR    lpCmdLine,_In_ int       nCmdShow)
{//系统信息SYSTEM_INFO sysinfo = { 0 };GetSystemInfo(&sysinfo);//获取逻辑处理器的详细信息PSYSTEM_LOGICAL_PROCESSOR_INFORMATION pBuffer = nullptr;DWORD dwSize = 0;BOOL bRet = GetLogicalProcessorInformation(pBuffer, &dwSize);DWORD lErr = GetLastError(); //ERROR_INSUFFICIENT_BUFFER;pBuffer = (PSYSTEM_LOGICAL_PROCESSOR_INFORMATION)malloc(dwSize);bRet = GetLogicalProcessorInformation(pBuffer, &dwSize);for (DWORD i = 0; i < dwSize / sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION); i++){pBuffer[i].Relationship == RelationProcessorCore ? "指定的逻辑处理器共享一个处理器核心。ProcessorCore成员包含额外的信息。" : "";pBuffer[i].ProcessorCore.Flags == 1 ?"如果这个成员的值是1,那么由ProcessorMask成员的值来识别的逻辑处理器,就像在超线程或SMT中一样。否则,被识别的逻辑处理器不共享功能单元。" : "";pBuffer[i].Relationship == RelationCache ? "The specified logical processors share a cache. The Cache member contains additional information. " : "";}free(pBuffer);pBuffer = nullptr;//Windows 32-bit On Windows 64-bit (WOW64)BOOL iswow = FALSE;bRet = IsWow64Process(GetCurrentProcess(), &iswow);//只有32位程序运行在WOW64上时iswow才被置为TRUE。//获取原来的系统信息(取代GetSystemInfo)GetNativeSystemInfo(&sysinfo);//虚拟内存状态MEMORYSTATUSEX memstatusex = { 0 };//ex增强在支持4GB内存大小长度memstatusex.dwLength = sizeof(memstatusex);bRet = GlobalMemoryStatusEx(&memstatusex);memstatusex.ullTotalPhys;//物理内存总量memstatusex.ullAvailPhys;//可分配的内存总量memstatusex.ullTotalVirtual;//进程私有空间大小memstatusex.ullAvailVirtual;//进程闲置空间大小//确定地址空间的状态MEMORY_BASIC_INFORMATION info = { 0 };lErr = VirtualQueryEx(GetCurrentProcess(), (LPCVOID)0x55, &info, sizeof(info));switch (info.State)//State 用于指明所有相邻页面的状态。{case MEM_FREE://空闲状态。该区域的虚拟地址不受任何内存的支持。该地址空间没有被保留。该状态下AllocationBase、AllocationProtect、Protect和Type等成员均未定义。break;case MEM_RESERVE://指明页面被保留,但是没有分配任何物理内存。该状态下Protect成员未定。break;case MEM_COMMIT://指明已分配物理内存或者系统页文件。break;default:break;}system("pause");return 0;
}

转载于:https://www.cnblogs.com/gongluck/p/9497620.html

Windows核心编程:第14章 探索虚拟内存相关推荐

  1. Windows核心编程 第十七章 -内存映射文件(上)

    第1 7章 内存映射文件 对文件进行操作几乎是所有应用程序都必须进行的,并且这常常是人们争论的一个问题.应用程序究竟是应该打开文件,读取文件并关闭文件,还是打开文件,然后使用一种缓冲算法,从文件的各个 ...

  2. Windows核心编程 第27章 硬件输入模型和局部输入状态

    第27章 硬件输入模型和局部输入状态 这章说的是按键和鼠标事件是如何进入系统并发送给适当的窗口过程的.微软设计输入模型的一个主要目标就是为了保证一个线程的动作不要对其他线程的动作产生不好的影响. 27 ...

  3. Windows核心编程 第十七章 -内存映射文件(下)

    17.3 使用内存映射文件 若要使用内存映射文件,必须执行下列操作步骤: 1) 创建或打开一个文件内核对象,该对象用于标识磁盘上你想用作内存映射文件的文件. 2) 创建一个文件映射内核对象,告诉系统该 ...

  4. Windows核心编程 第十一章 线程池的使用

    第11章 线程池的使用 第8章讲述了如何使用让线程保持用户方式的机制来实现线程同步的方法.用户方式的同步机制的出色之处在于它的同步速度很快.如果关心线程的运行速度,那么应该了解一下用户方式的同步机制是 ...

  5. Windows核心编程 第七章 线程的调度、优先级和亲缘性(下)

    7.6 运用结构环境 现在应该懂得环境结构在线程调度中所起的重要作用了.环境结构使得系统能够记住线程的状态,这样,当下次线程拥有可以运行的C P U时,它就能够找到它上次中断运行的地方. 知道这样低层 ...

  6. Windows核心编程 第六章 线程基础知识 (上)

    第6章 线程的基础知识 理解线程是非常关键的,因为每个进程至少需要一个线程.本章将更加详细地介绍线程的知识.尤其是要讲述进程与线程之间存在多大的差别,它们各自具有什么作用.还要介绍系统如何使用线程内核 ...

  7. Windows核心编程 第四章 进程(上)

    第4章 进 程     本章介绍系统如何管理所有正在运行的应用程序.首先讲述什么是进程,以及系统如何创建进程内核对象,以便管理每个进程.然后将说明如何使用相关的内核对象来对进程进行操作.接着,要介绍进 ...

  8. Windows核心编程 第三章 内核对象

    第3章内核对象 在介绍Windows API的时候,首先要讲述内核对象以及它们的句柄.本章将要介绍一些比较抽象的概念,在此并不讨论某个特定内核对象的特性,相反只是介绍适用于所有内核对象的特性. 首先介 ...

  9. 《windows核心编程》 17章 内存映射文件

    内存映射文件主要用于以下三种情况: 系统使用内存映射文件载入并运行exe和dll,这大量节省了页交换文件的空间以及应用程序的启动时间 开发人员可以使用内存映射文件来访问磁盘上的数据文件.这使得我们可以 ...

最新文章

  1. 美国匹兹堡大学高伟教授招收Mobile AI方向全奖博士生
  2. 7-10 石子合并 (10 分)
  3. php 代码 自动检查工具下载,PHP_CodeSniffer安装和使用教程(自动代码检查规范工具)...
  4. 计算机应用与技术大赛,关于举办2017年燕山大学第一届计算机应用技术与程序设计大赛的通知...
  5. log4j日志配置方法
  6. 互联网数据分析-入门到实战-笔记
  7. python 无法调用turtle_新人求助,关于python 调用turtle《python简单turtle教程》
  8. 英语对混职场有用么?
  9. Firefox在win10与win11系统上账号不同步的解决办法
  10. 如何设置论文目录左对齐?
  11. 现在PayPal还可以怎样提现???账户只有91刀!
  12. 一个小想法--理解指针的机制与汇编中的寄存器间接寻址
  13. 计算机用户帐号 MAC地址怎么查,mac地址怎么查
  14. LeetCode1175. 质数排列Prime Arrangements
  15. BZOJ 3653: 谈笑风生
  16. 不在同一局域网的两台电脑如何通过ssh连接
  17. CATTI 三级笔译考试准备
  18. CSS下划线与文字间距,下划线粗细以及下划线颜色的设置
  19. 用atmega16编程十位数计算机,AVR单片机(学习ing)—(九)、ATMEGA16的模数转换器—01...
  20. cad面积累计lisp怎么用_怎么计算填充图案的面积? - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...

热门文章

  1. matlab聚类算法,科学网—matlab-聚类算法笔记 - 孙月芳的博文
  2. java extensions JAR files
  3. activiti 流程图乱码
  4. 【spring-session】多项目实现session共享
  5. php cookie加密 类,PHP cookie加密类
  6. python一键安装包_Python一键安装全部依赖包
  7. 观察者设计模式 php,PHP设计模式 - 观察者模式
  8. 画图设置刻度_总结了16个常用的matlibplot画图技巧(附源码)
  9. android解析ip地址,android – 如何从IP地址解析网络主机名
  10. python日历提醒_python打印日历