-
-
[求助]PsLookupThreadByThreadId 总是返回错误,请问还有办法获取EThread结构吗大牛们帮下忙啊
-
发表于:
2010-8-23 16:05
6408
-
[求助]PsLookupThreadByThreadId 总是返回错误,请问还有办法获取EThread结构吗大牛们帮下忙啊
PsLookupThreadByThreadId 总是返回错误,请问如何解决,或者还有别的办法获取EThread结构吗 ?
驱动大概是这样的:
PETHREAD Thread;
PULONG Flags;
PHANDLE ThreadId = (PHANDLE)Irp->AssociatedIrp.SystemBuffer;
status=PsLookupThreadByThreadId(ThreadId,&Thread); //查找EThread,总是失败,不知什么原因。
R3大概这样:
hThreadSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD,0);
te32.dwSize=sizeof(THREADENTRY32);
if(Thread32First(hThreadSnapshot,&te32))
{
do
{
if(te32.th32OwnerProcessID == dwPID)
{
pBuffer = &(te32.th32ThreadID);
if(!DeviceIoControl(hDevice, IOCTL_THREAD, &pBuffer, sizeof(te32.th32ThreadID),NULL, 0, NULL, NULL))
{
CloseHandle(hDevice);
return FALSE;
}
}
}
while(Thread32Next(hThreadSnapshot,&te32));
}
看了下别人也是这么写的,可是PsLookupThreadByThreadId总是返回错误。我在Windows2003 和 Windows XP SP3上都是这样。到底该怎么办啊。或者有其他什么办法能得到EThread结构吗?谢谢大家了。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课