我正在Windows过滤平台中开发一个驱动程序,我需要另一个进程的进程ID来做我需要做的事情。我只知道该进程的文件名(name.exe)。
在win32中,我可以使用函数CreateToolhelp32Snapshot来获取所有进程的列表,并且可以在那里搜索PID。( http://msdn.microsoft.com/en-us/library/ms684834(VS.85).aspx
不幸的是,在内核模式下,这个东西不可用。有人知道如何通过内核空间获取只知道二进制名的processID吗?
发布于 2010-08-07 22:59:15
根据时间的不同,您似乎可以使用自己的CreateProcessNotifyEx()
处理程序调用PsSetCreateProcessNotifyRoutineEx()
。然后,您的CreateProcessNotifyEx()
将收到一个指向PS_CREATE_NOTIFY_INFO
的指针。这个结构中既有字段ImageFileName
,也有位FileOpenNameAvailable
。
程序名称将在ImageFileName
指向的Unicode字符串中。如果为FileOpenNameAvailable
,则该字符串将包含二进制文件的完全限定路径。否则,只能找到模块名称,可能没有扩展名。
https://stackoverflow.com/questions/3432142
复制相似问题