Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
В NT у процесса нет понятия "замороженности", и насколько я... 31.01.05 17:46 Число просмотров: 1086
Автор: leo <Леонид Юрьев> Статус: Elderman
|
В NT у процесса нет понятия "замороженности", и насколько я знаю в KPROCESS и ЕPROCESS нет полей, которые за это отвечают. Поэтому NtSuspendProcess() может только за-suspend-ить все треды. Другое дело, что при этом будет блокирована база данных диспетчера, и новые треды не должны создаваться при всем желании. Поэтому, думаю, что после NtSuspendProcess() можно бес проблем запустить отдельный поток через NTResumeThread().
Есть один "хитрый" момент в случае race между NtCreateThread() и NtSuspendProcess(). Когда suspend уже захватил блокировку, а create уже выполняется в режиме ядра и с race-опозданием дошел до той-же блокировки. Теоретически возможно, что create продолжит выполнение и создаст новый выполняющийся поток, сразу после того, как suspend остановит все существовавшие до этого потоки и отпустит блокировку. Но думаю, что такая ситуация предусмотренна и все продуманно.
|
|
|