Принадлежность потока процессу

Discussion in 'WASM.NT.KERNEL' started by AlexCasual, Sep 5, 2011.

  1. AlexCasual

    AlexCasual New Member

    Blog Posts:
    0
    Joined:
    Aug 3, 2009
    Messages:
    120
    Собственно сабж:
    - как поределить какому процессу принадлежит поток?
    - как получить дерево процессов (как в ProcessExplorer)?
     
  2. Ezrah

    Ezrah Member

    Blog Posts:
    0
    Joined:
    Mar 22, 2011
    Messages:
    411
    В ядре?
     
  3. x64

    x64 New Member

    Blog Posts:
    0
    Joined:
    Jul 29, 2008
    Messages:
    1,370
    Location:
    Россия
    Функция IoThreadToProcess(). Если по ID, то сначала получить адрес объекта-потока вызовом PsLookupThreadByThreadId(). Если по хендлу, тогда сперва вызов ObReferenceObjectByHandle(). В обоих случаях не забыть потом про ObDereferenceObject().

    Сервис NtQuerySystemInformation() с классом SystemProcessesInformation, получишь полный список процессов и их потоков, ну а дальше по идентификаторам сопоставить уже не проблема. Это всё обсуждалось много раз, есть поиск на этом форуме, есть поиск на RSDN, есть Google, в конце концов, - попробуй, это не сложно.