簡體   English   中英

獲取特定進程的線程句柄/ ID

[英]Obtain thread handles/id of a specific process

我有一個多線程嵌入式體系結構,其中包含6個特定於應用程序的進程,這些進程在執行初始化過程時執行。 同樣,每個線程都有其自己正在運行的線程數。

我要做的是根據設備是否連接到PC來掛起1個特定進程的運行線程。

我試着搜索,找到的最接近我正在尋找的內容是: 如何從Win32進程中獲取線程句柄列表?

但是,該代碼返回所有正在運行的線程的列表。 因為我試圖掛起所有獲得的線程(假設它們是從同一進程中獲得的),所以這對我不起作用,因此我也不會檢查它們也屬於哪個進程。

同樣,我正在獲取另一個進程中某個進程的運行線程的列表。

Windows是否有允許這種控制的現有方法,還是我不得不確定需要從整個列表中暫停哪些線程?

與其嘗試強行掛起線程(在“不太幸運的時刻”中掛起可能會給您帶來麻煩),不如使用一個手動重置的命名CreateEvent()

  • 命名事件很容易在進程之間共享。 您只需再次使用相同的名稱創建事件CreateEvent() 事件的典型名稱是MyCompany_MyProduct_MyFeature_EventName以防止意外沖突。
  • 當您在“設置”事件上使用WaitForSingleObject()時,等待將立即得到滿足。
  • 當您等待“重置”事件時,等待將掛起您的線程,直到設置了事件為止。
  • 當您的第一個應用程序不執行任何工作時,將使其線程等待事件,因此可以安全地掛起。
  • 您將設置和重置第二個應用程序中的事件以控制第一個應用程序。
  • 這樣,您無需枚舉線程,它更強大。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM