【API】获取系统内存所有状态

本文介绍了一种在Windows系统中遍历应用程序内存区域的方法。通过使用GetSystemInfo和VirtualQuery函数获取应用程序的最小地址和最大地址,并遍历这些区域来展示每个内存区域的基本信息。
    SYSTEM_INFO sysInfo = {0};

    GetSystemInfo(&sysInfo);

    DWORD dwMinAddr = (DWORD)sysInfo.lpMinimumApplicationAddress;
    DWORD dwMaxAddr = (DWORD)sysInfo.lpMaximumApplicationAddress;

    MEMORY_BASIC_INFORMATION memBase;
    int i = 0;

    for (dwMinAddr; dwMinAddr < dwMaxAddr;)
    {
        if (VirtualQuery((LPVOID)dwMinAddr, &memBase, sizeof(memBase)) == sizeof(memBase))
        {
            wprintf(_T("%d %x %x %d\r\n"),i ++,memBase.BaseAddress, memBase.RegionSize,memBase.AllocationProtect);
        }
        dwMinAddr += memBase.RegionSize;
    }

typedef struct _MEMORY_BASIC_INFORMATION 
{ 
    PVOID BaseAddress; 
    PVOID AllocationBase; 
    DWORD AllocationProtect; 
    DWORD RegionSize; 
    DWORD State; 
    DWORD Protect; 
    DWORD Type; 
} MEMORY_BASIC_INFORMATION;

【API】获取系统内存所有状态

转载于:https://blog.51cto.com/383156647/2068232

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值