WDK: получить идентификатор процесса по имени.exe - PullRequest
0 голосов
/ 08 августа 2010

Я разрабатываю драйвер для платформы фильтрации Windows, и мне нужен идентификатор процесса другого процесса, чтобы выполнить то, что мне нужно.Я знаю только имя файла этого процесса (name.exe).

В win32 я мог использовать функцию CreateToolhelp32Snapshot, чтобы получить список всех процессов, и я мог искать там PID.(http://msdn.microsoft.com/en-us/library/ms684834(VS.85).aspx)

К сожалению, в режиме ядра этот материал недоступен.Кто-нибудь знает, как я могу получить processID, зная только двоичное имя, по пространству ядра?

1 Ответ

0 голосов
/ 08 августа 2010

В зависимости от времени кажется, что вы можете вызвать PsSetCreateProcessNotifyRoutineEx() со своим собственным обработчиком для CreateProcessNotifyEx().Ваш CreateProcessNotifyEx() получит указатель на PS_CREATE_NOTIFY_INFO.В этой структуре есть поле ImageFileName, а также бит FileOpenNameAvailable.

Имя программы будет в строке Unicode, на которую указывает ImageFileName.Если FileOpenNameAvailable, то эта строка будет содержать полный путь к двоичному файлу.В противном случае ожидайте найти только имя модуля, возможно, без расширения.

...