Windows 核心编程之14 探索虚拟内存

本文详细介绍了如何获取和理解计算机系统的虚拟内存状态及详细系统信息,包括使用全局内存状态函数、虚拟查询函数等技术手段,深入探讨了内存负载、物理内存、页面文件和虚拟内存的管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

探索虚拟内存

1得到系统信息
GetsystemInfo(LPSYSTEM_INFO os);

typedef struct _SYSTEM_INFO {
    union {
        DWORD dwOemId;          // Obsolete field...do not use
        struct {
            WORD wProcessorArchitecture;
            WORD wReserved;
        };
    };
    DWORD dwPageSize;
    LPVOID lpMinimumApplicationAddress;
    LPVOID lpMaximumApplicationAddress;
    DWORD_PTR dwActiveProcessorMask;
    DWORD dwNumberOfProcessors;
    DWORD dwProcessorType;
    DWORD dwAllocationGranularity;
    WORD wProcessorLevel;
    WORD wProcessorRevision;
} SYSTEM_INFO, *LPSYSTEM_INFO;

2 虚拟内存状态
VOID
WINAPI
GlobalMemoryStatus(
    __out LPMEMORYSTATUS lpBuffer
    );

typedef struct _MEMORYSTATUS {
    DWORD dwLength; // 在使用前必须用结构体大小来初始化
    DWORD dwMemoryLoad; 内存使用百分率
    SIZE_T dwTotalPhys; 物理内存总量
    SIZE_T dwAvailPhys; 还剩余物理内存总量
    SIZE_T dwTotalPageFile; 页面文件总量,包括虚拟内存和物理内存
    SIZE_T dwAvailPageFile; 页面剩余量
    SIZE_T dwTotalVirtual; 虚拟内存总量
    SIZE_T dwAvailVirtual; 剩余虚拟内存量
} MEMORYSTATUS, *LPMEMORYSTATUS;

GetProcessMemoryInfo

得到进程的信息
   PROCESS_MEMORY_COUNTERS_EX pmc = { sizeof(PROCESS_MEMORY_COUNTERS_EX) };
   GetProcessMemoryInfo(GetCurrentProcess(), (PPROCESS_MEMORY_COUNTERS)&pmc, sizeof(pmc));
struct _PROCESS_MEMORY_COUNTERS_EX {
    DWORD cb;  必须初始化为结构体大小
    DWORD PageFaultCount; 页面错误
    SIZE_T PeakWorkingSetSize; 高峰工作集
    SIZE_T WorkingSetSize; 工作集
    SIZE_T QuotaPeakPagedPoolUsage; 高峰页面池
    SIZE_T QuotaPagedPoolUsage; 页面缓冲池
    SIZE_T QuotaPeakNonPagedPoolUsage;     高峰非页面缓冲池
    SIZE_T QuotaNonPagedPoolUsage; 非页面缓冲池
    SIZE_T PagefileUsage; 页面文件大小
    SIZE_T PeakPagefileUsage; 高峰页面文件大小
    SIZE_T PrivateUsage; 私有数据
} PROCESS_MEMORY_COUNTERS_EX;


确定地址空间中的状态

VirtualQuery

The VirtualQuery function provides information about a range of pages in the virtual address space of the calling process.
这个函数为调用进程提供指定区域的虚拟内存信息



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值