我正在Windows过滤平台中开发一个驱动程序,我需要另一个进程的进程ID来完成我需要做的事情。我只知道该进程的文件名(name.exe)。
在win32中,我可以使用CreateToolhelp32Snapshot函数来获取所有进程的列表,我可以在那里搜索PID。 (http://msdn.microsoft.com/en-us/library/ms684834(VS.85).aspx)
不幸的是在内核模式下这个东西不可用。任何人都知道如何通过内核空间获取只知道二进制名称的processID?
答案 0 :(得分:0)
根据时间安排,您似乎可以使用自己的PsSetCreateProcessNotifyRoutineEx()
处理程序调用{{1}}。然后,您的CreateProcessNotifyEx()
会收到指向CreateProcessNotifyEx()
的指针。在此结构中,字段PS_CREATE_NOTIFY_INFO
以及位ImageFileName
。
程序名称将位于FileOpenNameAvailable
指向的Unicode字符串中。如果ImageFileName
,那么该字符串将包含二进制文件的完全限定路径。否则,期望只找到模块名称,可能没有扩展名。