获取特定进程的线程handles/id

Obtain thread handles/id of a specific process

我有一个多线程嵌入式架构,其中包含 6 个特定于应用程序的进程,这些进程在执行初始化进程时执行。同样,每个线程都有自己的线程数 运行.

我想做的是根据设备是否连接到电脑暂停 1 个特定进程的 运行 个线程。

我尝试四处搜索,发现最接近我要查找的内容如下:How to obtain list of thread handles from a win32 process?

但是,该代码 returns 所有 运行 线程的列表。这对我不起作用,因为我试图暂停所有获得的线程,假设它们是从同一个进程获得的,因此我也不检查它们属于哪个进程。

同样,我正在获取另一个进程中一个进程的 运行 个线程列表。

是否存在 windows 中允许此类控制的现有方法,或者我是否必须确定我需要从整个列表中暂停哪些线程?

与其尝试强制挂起线程(当您在 "not so lucky moment" 中挂起时可能会给您带来麻烦),不如使用手动重置的命名 CreateEvent()

  • 命名事件很容易在进程之间共享。您只需再次使用相同的名称 CreateEvent()。事件的典型名称是 MyCompany_MyProduct_MyFeature_EventName 以防止意外碰撞。
  • 当您 WaitForSingleObject() 处理 "set" 事件时,等待会立即得到满足。
  • 当您等待 "reset" 事件时,等待会暂停您的线程,直到事件被设置。
  • 您的第一个应用程序将让其线程在不执行任何工作时等待事件,因此可以安全地挂起。
  • 您将从第二个应用程序设置和重置事件以控制第一个应用程序。
  • 这样就不需要枚举线程了,更加健壮。