Как в ядре узнать имя процесса в контексте которого приходит IRP пакет. Нужно не просто структура EPROCESS, а именно имя процесса (например explorer.exe).
х.з. у меня в WDK её нету. насколько я помню, такие вещи делаются через PEPROCESS. в гугле поищи смещения имени для разных осей.
Она недокументирована, её необходимо объявлять у себя в коде, само объявление без проблем найдёте в сети. Не изобретайте кривой велосипед вроде смещений в EPROCESS, это просто не нужно. Только вы определитесь, вам имя процесса нужно или полный путь к его исполняемому файлу? Второе делается по-другому и сложнее.
Способ 1: Прежде всего, PsLookupProcessByProcessId(). Далее ищешь секцию процесса (section), потом управляющую область (control area), а там уже будет файловый объект (file object), - из него тянешь полное имя. Способ 2: Прежде всего, ZwOpenProcess(), - получаешь хендл. Далее ZwQueryInformationProcess() с классом ProcessImageFileName или ProcessImageFileNameWin32 (это на Vista и выше). Первое недокументировано, но стабильную и надёжную реализацию сделать можно. И нужно.
Clerk Мы удалили, как оффтоп и провокацию. Хотя, возможно, стоило и другой твой пост удалить, ибо понятно, что во втором случае ZwOpenProcess() предлагалась лишь как часть варианта документированного решения, а раз это ясно, то твой первый пост с большей вероятностью является пробацией, нежели попыткой сообщить общественности некое откровение.
Sol_Ksacap Вы про сервис например NtOpenProcess слышите впервые ? Нет. И остальные тоже существуют давным давно. Немного надоели вопросы про имя подходящей апи. Должно вначале рассмотреть имеющийся в экспорте функционал полно, темболее что базой открыт в врк, только потом пытаться чтолибо писать в ядре. Создавать описатель для обьекта, который доступен непосредственно через ссылку на него весьма глупо. Нужен запрет доступа, вызов референс-калбэков и прочие неприятные вещи - юзайте.