问题描述
我正在使用以下命令对系统中的所有进程进行迭代:
- 使用“ NtQuerySysteminformation(SystemProcessinformation,buffer,buffer_size,NULL)”获取第一个进程。
- 使用格式为https://docs.microsoft.com/en-us/windows/win32/api/winternl/nf-winternl-ntqueryinformationprocess的SYstem_PROCESS_informatION中的“ NextEntryOffset”获取下一个进程。
,我想根据它们的PID过滤这些过程。我不清楚如何从SYstem_PROCESS_informatION结构获取PID。有一个名为“ UniqueProcessId”的字段,它为进程提供一个HANDLE,但将其传递给“ GetProcessId”后,我得到了错误代码6,这意味着进程句柄不正确。
欢迎从SYstem_PROCESS_informatION查找有关处理句柄或pid的任何建议。
谢谢。
解决方法
大多数NT API将包含以下语句:
[Nt ***可能会在Windows的将来版本中更改或不可用。]
根据您的情况,可以使用以下方法代替NtQuerySystemInformation
来检索系统进程: