【发布时间】:2016-09-20 13:17:53
【问题描述】:
我正在尝试获取 Windows 内核模式下进程使用的内存。
我尝试通过PSAPI.h 使用GetProcessMemoryInfo API。但这是一个 USER 模式功能,它不给我数据。
还有其他方法可以获取内存详细信息吗?
【问题讨论】:
-
您希望获得什么类型的信息?
我正在尝试获取 Windows 内核模式下进程使用的内存。
我尝试通过PSAPI.h 使用GetProcessMemoryInfo API。但这是一个 USER 模式功能,它不给我数据。
还有其他方法可以获取内存详细信息吗?
【问题讨论】:
您需要使用 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);
【讨论】: