首页
社区
课程
招聘
[求助]如何通过线程ID取得进程ID?
发表于: 2010-5-18 21:09 9235

[求助]如何通过线程ID取得进程ID?

2010-5-18 21:09
9235
收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
2
线程结构中包含所在进程信息
2010-5-18 21:11
0
雪    币: 1450
活跃值: (35)
能力值: (RANK:680 )
在线值:
发帖
回帖
粉丝
3
枚举系统线程 等于当前线程ID 则直接取结构体中其Father进程ID
2010-5-18 21:11
0
雪    币: 106
活跃值: (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
NtQueryInformationThread(ThreadBasicInformation)
THREAD_BASIC_INFORMATION.ClientId.UniqueProcess
2010-5-18 21:20
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
线程的结构体用哪个API获得???
2010-5-18 21:20
0
雪    币: 184
活跃值: (41)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
PTIB pTib;
_asm mov eax,fs:[18]
_asm mov pTib,eax

DWORD dwPID = pTib->TIB_UNION2.WINNT.processID;
2010-5-18 21:59
0
雪    币: 184
活跃值: (41)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
错了,6楼是去当前线程的线程结构,呵呵
2010-5-18 22:09
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
哦。没有API可以得到这个信息吗?这都把汇编放进来了。
2010-5-18 22:16
0
雪    币: 952
活跃值: (1821)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
晕...楼上的都不用正规api么? 2楼的方法即可
CreateToolhelp32Snapshot
Thread32First Thread32Next
if( sh.th32ThreadID  == dwTid)
{
       return sh.th32OwnerProcessID;
}
2010-5-18 23:09
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
如果6楼的方式可行的话那要简洁和快很多。可是我搞不清是什么原理。不知道行不行。
2010-5-18 23:18
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
NtQueryInformationThread函数的第一个参数是线程句柄,不是线程ID。

NTSTATUS WINAPI NtQueryInformationThread(
  __in          HANDLE ThreadHandle,          //线程句柄
  __in          THREADINFOCLASS ThreadInformationClass,
  __in_out      PVOID ThreadInformation,
  __in          ULONG ThreadInformationLength,
  __out_opt     PULONG ReturnLength
);

如果我要使用线程句柄得到进程ID那么我使用以下API就可以了。
DWORD WINAPI GetProcessIdOfThread(  //返回进程ID
  __in          HANDLE Thread       //参数:线程句柄
);
2010-5-18 23:25
0
游客
登录 | 注册 方可回帖
返回
//