Если вы «отлаживаете отладчик» (например, используете logger.exe
для отслеживания всех вызовов API, сделанных windbg.exe
), то кажется, что отладчик использует SuspendThread()
/ ResumeThread()
для приостановки всех потоков в отлаживаемый процесс.
PsSuspend может использовать другой способ приостановки процессов (я не уверен), но все еще возможно повесить другие процессы: если процесс, который вы приостанавливаете, содержит общий объект синхронизации, который необходим другому процессу, Вы можете заблокировать этот другой процесс от какого-либо прогресса. Если обе программы хорошо написаны, они должны восстановиться, когда вы возобновите приостановленную, но не все программы написаны правильно. И если это приводит к зависанию вашей программы, выполняющей приостановку, то у вас тупик.