关于Thread32First函数的疑问

Jofangkm 2009-01-16 02:50:24
我用CreateToolhelp32Snapshot函数创建一个线程快照,
然后用Thread32First枚举线程,对每一个枚举到的线程进行判断,
判断它是不是属于某个特定进程。我想知道的事如果有一组线程都属于
某个特定的进程,那么我第一个枚举到的是不是该进程的主线程呢?
有哪位大侠能详解下吗?
...全文
555 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwwhhb4001 2009-01-22
  • 打赏
  • 举报
回复

学习
shoooo 2009-01-20
  • 打赏
  • 举报
回复
只要主线程还活着,时间最早的是主线程
看看ZwQueryInformationThread有没有查时间的
arong1234 2009-01-19
  • 打赏
  • 举报
回复
不过为什么一定要获得主线程?觉得楼主不是先要找到答案,而是要先确定是否有必要知道这个答案
arong1234 2009-01-19
  • 打赏
  • 举报
回复
你这里是枚举线程,好像没有涉及“主”线程哦!

我觉得可以通过获得父线程id建立一个线程树,树的根就是主线程
[Quote=引用 4 楼 oyljerry 的回复:]
知道了进程ID如何获得主线程ID
------------------------------
1.OpenProcess 取得 process handle
2.CreateToolhelp32Snapshot 得到一个snapshot
3.然后调 Thread32First,Thread32Next 取线程。
MSDN 有个例子:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/perfmon/base/taking_a_snapshot_and_viewing_processes.asp

http://community.csdn.net/E…
[/Quote]
oyljerry 2009-01-19
  • 打赏
  • 举报
回复
知道了进程ID如何获得主线程ID
------------------------------
1.OpenProcess 取得 process handle
2.CreateToolhelp32Snapshot 得到一个snapshot
3.然后调 Thread32First,Thread32Next 取线程。
MSDN 有个例子:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/perfmon/base/taking_a_snapshot_and_viewing_processes.asp

http://community.csdn.net/Expert/topic/3562/3562360.xml?temp=7.851809E-02
arong1234 2009-01-19
  • 打赏
  • 举报
回复
我觉得不能想当然,这要看Thread32First的实现,好像没有文档说它按照创建先后来枚举
[Quote=引用 1 楼 Holly 的回复:]
作为进程首个被创建的线程,其句柄在句柄表中自然会出现在首位,正常情况下这个是肯定的!
枚举到的第一个应当是主线程。
[/Quote]
sys0008 2009-01-19
  • 打赏
  • 举报
回复
这个不好确定,其实主线程和其他线程没有本质的区别
Holly 2009-01-19
  • 打赏
  • 举报
回复
作为进程首个被创建的线程,其句柄在句柄表中自然会出现在首位,正常情况下这个是肯定的!
枚举到的第一个应当是主线程。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧