微软有一个比较实用的Native接口:NtQuerySystemInformation,具体可以参考微软msdn官方文档:NtQuerySystemInformation, 是一个系统函数,用于收集特定于所提供的指定种类的系统信息。ProcessHacker等工具使用NtQuerySystemInformation这个函数获取当前系统的处理器CPU核数,系统进程信息(包括CPU使用率、IO等)。
使用 NTQuerySystemInformation 列出 Windows 进程
有一篇文章介绍了使用 NTQuerySystemInformation 列出 Windows 进程,具体地址为:Windows Process Listing using NTQuerySystemInformation,对应Github代码地址为:WinAPI-RedBlue
具体的位置为:WinAPI-RedBlue/Process Listing/NT Query System Api/
下载WinAPI-RedBlue源代码后,对应目录结果如下:
使用VS2022打开【WinAPI-RedBlue\Process Listing】下的Process Listing.sln解决方案工程文件,然后运行其中的NT Query System Api
项目,可以获取当前系统中所有运行的进程信息,如下图所示:
参考资料
- NtQuerySystemInformation函数
- Windows Process Listing using NTQuerySystemInformation
- Breaking Down System Routines #2 [NtQuerySystemInformation]
- procprv.c