关于在驱动中结束进程;

DONG1035   2008-9-1 16:10 楼主
想在驱动程序中终止某个进程;

如果在驱动程序中枚举进程名来获得进程的ID或HANDLE,将会使用好几个while和if或者for之类的循环体,占用内核资源不说,就实现上都相当麻烦(当然这是对于我这种莱鸟来说的);

于是就想在用户程序里先获得进程的ID或HANDLE,然后再传递给驱动程序,驱动程序再根据这ID或者HANDLE来结束进程,觉得这样比较轻松;

问题是: 用户程序里获得的进程ID是DWORD类型, 或者是HANDLE, 而驱动程序里对进程或线程的操作是需要CLIENT_ID结构体,其中这个结构体定义如下:


  1. typedef struct _CLIENT_ID {
  2.     HANDLE UniqueProcess;
  3.     HANDLE UniqueThread;
  4. } CLIENT_ID;
  5. typedef CLIENT_ID *PCLIENT_ID;


请教,该如何做? 谢谢了

回复评论 (1)

以线程为例,希望能提供点思路
通过PsLookupThreadId就可以很方便的将用户态的ThreadID转化为对应的PEThread
结构指针

HANDLE ThreadId=*(PHANDLE)Irp->AssociatedIrp.SystemBuffer;
PETHREAD Thread;
NTSTATUS status=::PsLookupThreadByThreadId(ThreadId,&Thread);
if(NT_SUCCESS(status))
{.......}
点赞  2008-9-19 20:22
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复