Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 我不知道´;我不知道如何通过进程名获得进程的pid_C_Pid_Wdk_Windows Kernel - Fatal编程技术网

C 我不知道´;我不知道如何通过进程名获得进程的pid

C 我不知道´;我不知道如何通过进程名获得进程的pid,c,pid,wdk,windows-kernel,C,Pid,Wdk,Windows Kernel,我想获取进程id,例如进程“notepad.exe” 我只找到了如何通过PID获取进程的线程等。但是我想通过进程名获取PID(在这个场景中是“notepad.exe”)。 这与我的内核驱动程序有关。可以有多个进程的进程映像来自文件notepad.exe。您必须枚举所有正在运行的进程,并从中检索模块名称。MSDN中对此进行了描述: 然后从进程列表中提取具有模块名的所有进程notepad.exe,并获取匹配的PID列表。感谢您的帮助。记事本只是一个例子,我知道我想要的进程只能运行一次。@Nachom

我想获取进程id,例如进程“notepad.exe”

我只找到了如何通过PID获取进程的线程等。但是我想通过进程名获取PID(在这个场景中是“notepad.exe”)。
这与我的内核驱动程序有关。

可以有多个进程的进程映像来自文件
notepad.exe
。您必须枚举所有正在运行的进程,并从中检索模块名称。MSDN中对此进行了描述:


然后从进程列表中提取具有模块名的所有进程
notepad.exe
,并获取匹配的PID列表。

感谢您的帮助。记事本只是一个例子,我知道我想要的进程只能运行一次。@Nachomadding:这并没有改变这样一个事实,即从操作系统的角度来看,通常模块名和PID之间没有严格的双射映射。因为它通常不是双射的,所以没有动机使用“GetSinglePIDByModuleName”API。只需枚举进程并按模块名进行比较,就像对通用PID所做的那样→命名满射映射并获取结果列表的(单个)第一个元素。或者更好的方法是,执行一个健全性检查,确保您实际上得到一个只有一个条目的列表;如果该检查失败,则假定您的系统处于错误状态。@内核驱动程序中的同质添加需要将
NtQuerySystemInformation
SystemProcessInformation
一起使用
enumprocess
。但是,通常使用的名称并不是最好的选择——需要询问——在这个过程中,你需要根据另一个东西搜索什么