如何从 SYSTEM_PROCESS_INFORMATION 结构中获取进程 ID?
How to get process id from SYSTEM_PROCESS_INFORMATION struct?
我正在使用以下方法迭代系统中的所有进程:
- 使用“NtQuerySystemInformation(SystemProcessInformation, buffer, buffer_size, NULL)”获取第一个进程。
- 使用 SYSTEM_PROCESS_INFORMATION 中的“NextEntryOffset”获取下一个进程,其格式为 https://docs.microsoft.com/en-us/windows/win32/api/winternl/nf-winternl-ntqueryinformationprocess.
我想根据 PID 过滤这些进程。我不清楚如何从 SYSTEM_PROCESS_INFORMATION 结构中获取 PID。有一个名为“UniqueProcessId”的字段,它为进程提供了句柄,但在将其传递给“GetProcessId”后,我得到错误代码 6,这意味着进程句柄不正确。
欢迎提出有关从 SYSTEM_PROCESS_INFORMATION 中查找进程句柄或 pid 的任何建议。
提前致谢。
大部分NTapi都会包含以下语句:
[Nt*** may be altered or unavailable in future versions of Windows.]
对于您的情况,您可以使用以下方法代替NtQuerySystemInformation
来检索系统进程:
我正在使用以下方法迭代系统中的所有进程:
- 使用“NtQuerySystemInformation(SystemProcessInformation, buffer, buffer_size, NULL)”获取第一个进程。
- 使用 SYSTEM_PROCESS_INFORMATION 中的“NextEntryOffset”获取下一个进程,其格式为 https://docs.microsoft.com/en-us/windows/win32/api/winternl/nf-winternl-ntqueryinformationprocess.
我想根据 PID 过滤这些进程。我不清楚如何从 SYSTEM_PROCESS_INFORMATION 结构中获取 PID。有一个名为“UniqueProcessId”的字段,它为进程提供了句柄,但在将其传递给“GetProcessId”后,我得到错误代码 6,这意味着进程句柄不正确。
欢迎提出有关从 SYSTEM_PROCESS_INFORMATION 中查找进程句柄或 pid 的任何建议。
提前致谢。
大部分NTapi都会包含以下语句:
[Nt*** may be altered or unavailable in future versions of Windows.]
对于您的情况,您可以使用以下方法代替NtQuerySystemInformation
来检索系统进程: