С помощью PsLookupThreadByThreadId получаешь ETHREAD, в нём есть указатель на EPROCESS родителя, а в EPROCESS'е родителя есть его id
Да так и есть. Большое спасибо! Одна только беда - struct _ETHREAD недокументированна, насколько она меняется в в пределах XP sp1, sp2, Vista?
ZwQuerySystemInformation(InfoClass=SystemObjectInformation) содержит поле CreatorProcessId; отсюда можно получить идентификатор процесса, создавшего объект.
сильно меняется, мой тебе совет - никогда не используй ее напрямую по мере возможности. Clerk +1, ZwQuerySysInfo тут рулит. кстати, а ведь еще есть PsGetThreadProcessId, че это про неё забыли?