6

我可以使用 SuspendThread() 挂起另一个进程的线程。有没有办法完全暂停该进程的执行?如果是,请发布代码。

谢谢。

PS:既然你会问“你为什么要这样做”,我会在这里发布。我正在处理不再维护的遗留软件。我无权访问源代码。现在我需要它暂停,直到文件充满数据,然后恢复执行。

4

3 回答 3

2

唯一的方法是暂停该进程的所有线程。

如果您想查看实际代码,请在此处查看示例。

于 2009-08-07T13:06:11.980 回答
0

> 唯一的方法是暂停该进程的所有线程。

否。
使用未记录的内核 API(自 NT 3.1 起导出)暂停 Pid。

于 2009-08-08T07:37:54.627 回答
0

如果进程快速或异步地拥有或产生许多线程,则您的主题将受到 SuspendThread() 的竞争条件。

完成相同事情(即进程范围)的一种方法是使用DebugActiveProcess()作为调试器附加到目标进程,然后简单地调用DebugBreakProcess。当一个进程处于断点时,不会创建新线程,并且所有执行,进程范围都将停止。

于 2011-04-21T08:45:33.390 回答