获取特定进程的线程句柄/id
Obtain thread handles/id of a specific process
我有一个多线程嵌入式架构,其中包含6个特定于应用程序的进程,这些进程在初始化进程执行时执行。同样,每个线程都有自己的线程数。
我想做的是根据设备是否连接到pc,暂停一个特定进程的运行线程。
我试着四处搜索,最接近我发现我在寻找的是以下内容:如何从win32进程获得线程句柄列表?
但是,该代码返回所有正在运行的线程的列表。这对我不起作用,因为我试图挂起所有获得的线程,假设它们是从同一进程获得的,因此我不检查它们也属于哪个进程。同样,我正在获取另一个进程中一个进程的运行线程列表。
是否有一个现有的方法从窗口,允许这样的控制,或者我不得不确定哪些线程我需要暂停从整个列表?
与其尝试强制挂起线程(当你在"不那么幸运的时刻"挂起时可能会给你带来麻烦),不如使用一个名为CreateEvent()
的手动重置。
- 命名事件很容易在进程之间共享。您只需再次使用相同的名称
CreateEvent()
。事件的典型名称为MyCompany_MyProduct_MyFeature_EventName
,以防止意外碰撞。 - 当你
WaitForSingleObject()
on"set"事件时,等待立即被满足。 - 当你等待"reset"事件时,等待会挂起你的线程,直到事件被设置。
- 你的第一个应用程序将有它的线程等待事件,当他们没有做任何工作,因此可以安全挂起。
- 设置和重置第二个应用程序的事件来控制第一个应用程序。 这样,你就不需要枚举线程,而且它更健壮。
相关文章:
- 外壳包装器句柄/执行交互式命令管道C++ UNIX
- 如何获取边缘窗口句柄 (HWND)?
- 枚举进程模块在有效句柄上返回无效句柄
- 在 c/c++ 中打开 PhysicalDrive 的句柄并写入 MBR 的 linux 等效是什么?
- 从运行服务的应用程序代码中提取窗口句柄
- 在读取文件后重置句柄
- 是否有像地图这样的C++结构,但我得到的不是值的键,而是值的句柄?
- Microsoft ODBC 无法创建有效的句柄
- 我是否可以使用 win32 句柄以编程方式记录发送到/接收到 USB/COM 的内容
- 获取特定进程的句柄数
- C++ 创建 NdisProt 驱动程序的句柄
- 是否需要关闭来自 WinHTTP 异步的句柄?
- 句柄OK全部崩溃
- 我需要通过窗口句柄(HWND)获取文件,我该怎么办?
- 什么是 C# 等同于C++句柄
- C++:通过进程id、进程句柄和标题名称从进程中获取唯一窗口的窗口句柄的最佳方法
- Linux:通过boost:: Thread的句柄获取线程ID
- 如何根据进程id枚举所有子窗口句柄?
- 如何获取Windows C++中进程(输入:进程ID或句柄)的每秒接收和发送网络字节数?
- 获取特定进程的线程句柄/id