我可以通过使用SuspendThread()挂起另一个进程的线程。有什么办法可以同时暂停执行该过程? 如果是,请张贴代码。暂停执行远程进程(C,Windows)
谢谢。
PS: 既然你会问“为什么你要这样做”我会在这里发布。 我正在处理不再维护的遗留软件。我无法访问源代码。现在我需要它暂停,直到文件充满数据,然后恢复执行。
我可以通过使用SuspendThread()挂起另一个进程的线程。有什么办法可以同时暂停执行该过程? 如果是,请张贴代码。暂停执行远程进程(C,Windows)
谢谢。
PS: 既然你会问“为什么你要这样做”我会在这里发布。 我正在处理不再维护的遗留软件。我无法访问源代码。现在我需要它暂停,直到文件充满数据,然后恢复执行。
唯一的方法是暂停该进程的所有线程。
如果你想看到实际的代码,请检查示例here。
>唯一的方法是暂停该进程的所有线程。
编号
使用未记录的内核apis(自NT 3.1以后导出)暂停Pid。
感谢您的意见,但只是说“使用无证API”不会给我任何答案。如果您知道任何未公开的API,请发布并提供一些示例代码。 – wonderer 2009-08-10 12:48:45
如果进程拥有或产生了许多线程,可以快速或异步执行,那么您的主题将与SuspendThread()竞争。
完成同样事情(即过程范围)的一种方法是作为调试器附加到目标进程DebugActiveProcess(),然后简单地调用DebugBreakProcess。当进程处于中断点时,将不会创建新线程,并且所有执行,进程范围内的都将停止。
会暂停过程本身?我试着暂停所有线程,但主进程仍然处于活动状态。 – wonderer 2009-08-07 13:43:48
一个进程包含一个或多个线程,这些线程实际上执行了进程中的代码(从技术上说,进程不运行,线程也这样做)。 – 2009-08-07 13:48:10
太好了。感谢您的解释 – wonderer 2009-08-07 13:51:43