получить из thread id prosess id

Тема в разделе "WASM.NT.KERNEL", создана пользователем katrus, 18 фев 2008.

  1. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Скажите, можно ли по id потока получить id его родительского процесса?
     
  2. Sheph

    Sheph New Member

    Публикаций:
    0
    Регистрация:
    24 янв 2008
    Сообщения:
    89
    С помощью PsLookupThreadByThreadId получаешь ETHREAD, в нём есть указатель на EPROCESS родителя, а в EPROCESS'е родителя есть его id
     
  3. Sheph

    Sheph New Member

    Публикаций:
    0
    Регистрация:
    24 янв 2008
    Сообщения:
    89
    Это если "родительский процесс потока", означает "процесс, владеющий потоком"
     
  4. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Да так и есть. Большое спасибо!

    Одна только беда - struct _ETHREAD недокументированна, насколько она меняется в в пределах XP sp1, sp2, Vista?
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    ZwQuerySystemInformation(InfoClass=SystemObjectInformation) содержит поле CreatorProcessId; отсюда можно получить идентификатор процесса, создавшего объект.
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    сильно меняется, мой тебе совет - никогда не используй ее напрямую по мере возможности.

    Clerk
    +1, ZwQuerySysInfo тут рулит.

    кстати, а ведь еще есть PsGetThreadProcessId, че это про неё забыли?
     
  7. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    SystemPrcoessInformation тоже подходит.