troylees
驱动牛犊
驱动牛犊
  • 注册日期2006-05-10
  • 最后登录2009-05-01
  • 粉丝0
  • 关注0
  • 积分678分
  • 威望128点
  • 贡献值0点
  • 好评度67点
  • 原创分0分
  • 专家分0分
阅读:2895回复:13

请问我在驱动中用PsActiveProcessHead遍历进程链表时,需要上自旋锁吗?

楼主#
更多 发布于:2007-05-07 21:30
  如题!我想遍历进程链表,在各进程的EPROCESS直接读取它的信息,并自己建立一个信息链表,请问这样的操作需要用上spinlock吗,如果要的话,请大家给点例子代码可以吗?谢谢了
低调小强
驱动牛犊
驱动牛犊
  • 注册日期2005-09-16
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分457分
  • 威望48点
  • 贡献值0点
  • 好评度45点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2007-05-09 17:54
PsActiveProcessHead()函数本身是安全的吧。。为何要锁?
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
板凳#
发布于:2007-05-09 20:16
因为系统也要修改这个玩意~
如果不小心的话,还是会蓝屏的,建议修改时采用lock,遍历时不要采用——毕竟windows蓝屏了谁也不好受~
没有战争就没有进步 X3工作组 为您提供最好的军火
troylees
驱动牛犊
驱动牛犊
  • 注册日期2006-05-10
  • 最后登录2009-05-01
  • 粉丝0
  • 关注0
  • 积分678分
  • 威望128点
  • 贡献值0点
  • 好评度67点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-05-09 21:41
哦,明白了,谢谢!
另外一个问题请问一下:我遍历链表时,在各进程的EPROCESS直接读取它的信息,但是发现这样的兼容性很差,同样时xp的sp2,但是有的会蓝屏死掉,我想知道有没有一些通用一点的方法提高兼容性呢?(NtQuerySystemInformation 除外)。谢谢大家的回复。。
wangjianfeng
驱动小牛
驱动小牛
  • 注册日期2004-05-28
  • 最后登录2013-10-02
  • 粉丝0
  • 关注0
  • 积分1002分
  • 威望263点
  • 贡献值0点
  • 好评度260点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-05-10 08:58
读取肯定不会死机,只有写入或执行内核中的内存或代码才有可能蓝.
WQXNETQIQI
驱动大牛
驱动大牛
  • 注册日期2006-06-12
  • 最后登录2010-10-26
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望1076点
  • 贡献值0点
  • 好评度895点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2007-05-10 11:11
谁说读取肯定不会蓝的
驱动开发者 呵呵
troylees
驱动牛犊
驱动牛犊
  • 注册日期2006-05-10
  • 最后登录2009-05-01
  • 粉丝0
  • 关注0
  • 积分678分
  • 威望128点
  • 贡献值0点
  • 好评度67点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-05-11 20:01
请问有没有一些温和一点的方法呢?希望可以提高一点兼容性,不然到时候在老师的机上死掉,就不用毕业了。。。
shenhui
驱动小牛
驱动小牛
  • 注册日期2006-05-11
  • 最后登录2023-02-10
  • 粉丝14
  • 关注11
  • 积分142分
  • 威望1314点
  • 贡献值1点
  • 好评度146点
  • 原创分0分
  • 专家分1分
  • 社区居民
7楼#
发布于:2007-05-15 10:26
楼主是怎么得到PsActiveProcessHead这个系统变量的,能否说一下
作一名真实,诚实,优秀的科技工作者!
rhettxie
驱动牛犊
驱动牛犊
  • 注册日期2004-10-27
  • 最后登录2010-02-04
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望65点
  • 贡献值0点
  • 好评度59点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-05-15 11:28
PsGetCurrentProcess 得到当前进程的 EPROCESS, 然后再EPROCESS结构里找
静水流深
troylees
驱动牛犊
驱动牛犊
  • 注册日期2006-05-10
  • 最后登录2009-05-01
  • 粉丝0
  • 关注0
  • 积分678分
  • 威望128点
  • 贡献值0点
  • 好评度67点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2007-05-16 00:12
某文章说“ntoskrnl.exe导出的PsInitialSystemProcess 是一个指向system进程的EPROCESS。这个结构成员EPROCESS.ActiveProcessLinks.Blink就是指向PsActiveProcessHead的. ”只有system进程的ActiveProcessLinks.Blink才指向PsActiveProcessHead,所以建议在DriverEntry中获取
qiweixue
驱动小牛
驱动小牛
  • 注册日期2004-07-21
  • 最后登录2011-12-19
  • 粉丝0
  • 关注0
  • 积分1006分
  • 威望274点
  • 贡献值0点
  • 好评度268点
  • 原创分1分
  • 专家分0分
10楼#
发布于:2007-05-21 10:03
结合V大和WQXNETQIQI 的语录,,,
读也lock,写更要也lock了,,,,

 
troylees
驱动牛犊
驱动牛犊
  • 注册日期2006-05-10
  • 最后登录2009-05-01
  • 粉丝0
  • 关注0
  • 积分678分
  • 威望128点
  • 贡献值0点
  • 好评度67点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2007-05-22 00:29
谢谢你的回复,我也觉得这样会安全一点,因为有时候读的话会蓝掉,而且不可以运行卡巴
packze
驱动牛犊
驱动牛犊
  • 注册日期2005-09-19
  • 最后登录2008-01-19
  • 粉丝0
  • 关注0
  • 积分151分
  • 威望17点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2007-05-25 09:23
引用第10楼qiweixue于2007-05-21 10:03发表的  :
结合V大和WQXNETQIQI 的语录,,,
读也lock,写更要也lock了,,,,

 


锁也是白锁,因为系统要改写这个链表的时候,并不会使用你的SpinLock,这时候,SpinLock的作用仅仅是把IRQL提升一下而以
Kalee
驱动牛犊
驱动牛犊
  • 注册日期2002-10-26
  • 最后登录2012-02-21
  • 粉丝0
  • 关注0
  • 积分358分
  • 威望47点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2007-05-25 10:03
Re:请问我在驱动中用PsActiveProcessHead遍历进程链表时,需要上自旋锁吗
那就关中断__asm CLI
 __asm STI
游客

返回顶部