我试图在Windows的内核模式下获取进程使用的内存。
我尝试通过GetProcessMemoryInfo
使用PSAPI.h
API。但这是一个用户模式功能,而且它没有给我数据。
还有其他方法可以获取内存详细信息吗?
答案 0 :(得分:1)
您需要使用ProcessVmCounters
和ProcessIoCounters
与ZwQueryInformationProcess
或NtQueryInformationProcess
取决于之前的模式
ULONG rcb;
union {
VM_COUNTERS vmc;
VM_COUNTERS_EX vmcex;
};
IO_COUNTERS ioc;
ZwQueryInformationProcess(NtCurrentProcess(), ProcessVmCounters, &vmc, sizeof(vmc), &rcb);
ZwQueryInformationProcess(NtCurrentProcess(), ProcessVmCounters, &vmcex, sizeof(vmcex), &rcb);
ZwQueryInformationProcess(NtCurrentProcess(), ProcessIoCounters, &ioc, sizeof(ioc), &rcb);