Приостановка выполнения удаленного процесса (C, Windows) - PullRequest
4 голосов
/ 07 августа 2009

Я могу приостановить поток другого процесса с помощью SuspendThread (). Есть ли способ также приостановить выполнение этого процесса в целом? Если да, пожалуйста, отправьте код.

Спасибо.

PS: Поскольку вы спросите «Почему вы хотите это сделать», я выложу это здесь. Я имею дело с устаревшим программным обеспечением, которое больше не поддерживается. У меня нет доступа к исходному коду. Сейчас мне нужно сделать паузу, пока файл не будет заполнен данными, а затем возобновить выполнение.

Ответы [ 3 ]

2 голосов
/ 07 августа 2009

Единственный способ - приостановить все потоки этого процесса.

Если вы хотите увидеть реальный код, проверьте образец здесь .

0 голосов
/ 21 апреля 2011

Если процесс имеет или порождает много потоков быстро или асинхронно, ваше условие состязания с SuspendThread ().

Одним из способов достижения той же цели (которая распространяется на весь процесс) является присоединение отладчика к целевому процессу с помощью DebugActiveProcess () , а затем просто вызовите DebugBreakProcess . Когда процесс находится в точке останова, новые потоки не создаются и все выполнение, широкий процесс будет остановлено.

0 голосов
/ 08 августа 2009

> Единственный способ - приостановить все потоки этого процесса.

номер
Используйте недокументированное ядро ​​apis (экспортировано начиная с NT 3.1), чтобы приостановить Pid.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...