"пометить" поток

Тема в разделе "WASM.NT.KERNEL", создана пользователем katrus, 26 янв 2009.

  1. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Предположим стоит следующая задача: в режиме пользователя пометить несколько потоков, в ядре пройтись по всем потокам и подсчитать количество помченных. Первое, что пришло в голову - залезть в контекст потока и пометить там "магическое" число. Но непонятно, как можно добратся до этого контекста из режима пользователя. Попробовал Set/Get ThreadContext, вроде обе функции возвращают TRUE, но необходимого эффекта не дают. Может есть более прямой способ.
     
  2. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    В TEB'е какой-нить ненужный флаг под себя переделай.
    ZwQueryInformationThread\ZwSetInformationThread - ThreadBasicInformation
     
  3. s0larian

    s0larian New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    489
    Адрес:
    Крыжёпполь
    katrus, а что, передать себе в драйвер ID процессов и потоков слабо?
     
  4. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    не слабо, но муторно держать в ядре базу данных потоков, следить ккаой поток открылся, закрылся, и т.д.

    Нашел элегантное решение: в начале "помеченного" потока прописываю код "подпись", которыы сам по себе ничего не делает, но легко может быть определен из ядра.
     
  5. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    фигасе элегантное.
    особенно интересен пункт "начало потока".
    Этот способ имеет кучу минусов.
    Лучше как тебе сказали юзать неиспользуемые или редкоиспользуемые поля в TEB'е.