21,597
社区成员
发帖
与我相关
我的任务
分享
PETHREAD Thread;
PULONG Flags;
PHANDLE ThreadId = (PHANDLE)Irp->AssociatedIrp.SystemBuffer;
status=PsLookupThreadByThreadId(ThreadId,&Thread); //查找EThread,总是失败,不知什么原因。
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));
}