Windows内核编程基础篇之系统线程

    在驱动中停止等待很容易是哼歌系统陷入"停顿",最后只能重启电脑,但是一个单独的线程长期等待,还不至于对系统造成致命的影响。有些任务是希望长期不断的执行,比如 不断的写入日志,为此,启动一个特殊的线程来执行他们是最好的办法,

     驱动中生成的线程一般是系统线程。系统线程所在的进程名:“System”,用到的内核API 函数原型如下:

NTSTATUS PsCreateSystemThread(
  _Out_     PHANDLE            ThreadHandle,
  _In_      ULONG              DesiredAccess,
  _In_opt_  POBJECT_ATTRIBUTES ObjectAttributes,
  _In_opt_  HANDLE             ProcessHandle,
  _Out_opt_ PCLIENT_ID         ClientId,
  _In_      PKSTART_ROUTINE    StartRoutine,
  _In_opt_  PVOID              StartContext
);  
       这个函数参数也是够多的, 但是参数传入很简单ThreadHandle 用来返回句柄,放入一个句柄指针即可; DesiredAddress 总是填写 0, 后面的3个参数都填写 NULL;最后的2个参数有一个用于该线程启动的时候去执行的函数,剩下的一个是用于传入该函数的参数。

      这个就是启动函数的原型:

VOID CustomThreadProc(IN PVOID context); 

    简单的不能再简单了。就一个参数, context 就是从 PsCreateSystemThread中的 StartContext。线程的结束应该在县城中自己调用 PsTerminateSystemThread 来完成,此外,得到的句柄也必须要用 ZwClose 关闭。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值