挂起远程进程的执行(C、Windows)

挂起远程进程的执行(C、Windows),c,windows,winapi,process,suspend,C,Windows,Winapi,Process,Suspend,我可以使用SuspendThread()挂起另一个进程的线程。有没有办法同时暂停该过程的执行? 如果是,请张贴代码 谢谢 附言: 既然你会问“你为什么要这样做”,我就把它贴在这里。 我正在处理不再维护的遗留软件。我没有访问源代码的权限。现在我需要它暂停,直到文件中充满数据,然后恢复执行。唯一的方法是暂停该进程的所有线程 如果要查看实际代码,请检查示例。>唯一的方法是挂起该进程的所有线程 否。 使用未记录的内核API(从NT 3.1开始导出)挂起Pid。如果进程快速或异步地拥有或生成了多个线程,则

我可以使用SuspendThread()挂起另一个进程的线程。有没有办法同时暂停该过程的执行? 如果是,请张贴代码

谢谢

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

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

如果要查看实际代码,请检查示例。

>唯一的方法是挂起该进程的所有线程

否。

使用未记录的内核API(从NT 3.1开始导出)挂起Pid。

如果进程快速或异步地拥有或生成了多个线程,则受SuspendThread()竞争条件的约束


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

这会挂起进程本身吗?我尝试挂起所有线程,但主进程仍然处于活动状态。一个进程包括一个或多个线程,它们实际执行进程中的代码(从技术上讲,进程不运行,线程运行)。太好了。感谢您的解释如果您阅读了关于Codeproject的那篇文章,请注意“一些程序编写得不好”包括许多编写得很好的程序,这些程序碰巧以完全合法的方式使用互斥锁。挂起总是有点冒险和尴尬(尽管对于您的特定示例,可能很难找到更好的方法)。谢谢您的评论,但仅仅说“使用未记录的API”不会给我任何答案。如果您知道任何未记录的API,请发布它并给出一些示例代码。