我可以使用 SuspendThread() 挂起另一个进程的线程。有没有办法完全暂停该进程的执行?如果是,请发布代码。
谢谢。
PS:既然你会问“你为什么要这样做”,我会在这里发布。我正在处理不再维护的遗留软件。我无权访问源代码。现在我需要它暂停,直到文件充满数据,然后恢复执行。
唯一的方法是暂停该进程的所有线程。
如果您想查看实际代码,请在此处查看示例。
> 唯一的方法是暂停该进程的所有线程。
否。
使用未记录的内核 API(自 NT 3.1 起导出)暂停 Pid。
如果进程快速或异步地拥有或产生许多线程,则您的主题将受到 SuspendThread() 的竞争条件。
完成相同事情(即进程范围)的一种方法是使用DebugActiveProcess()作为调试器附加到目标进程,然后简单地调用DebugBreakProcess。当一个进程处于断点时,不会创建新线程,并且所有执行,进程范围都将停止。