PsLookupThreadByThreadId 总是返回错误,请问还有办法获取EThread结构吗

csx007700 2010-08-23 03:52:24
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结构吗?谢谢大家了。
...全文
123 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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