首页
社区
课程
招聘
[讨论]KeSetAffinityThread
发表于: 2008-4-20 00:11 8004

[讨论]KeSetAffinityThread

2008-4-20 00:11
8004
今天写了个小驱动玩

想扩展到多核上  于是调用KeSetAffinityThread

VSI调试的时候出现    如下错误:

fa4099b9   call   fa409b74 // NewDriver!KeSetAffinityThread
BUGCHECK: a  IRQL_NOT_LESS_OR_EQUAL
An attempt was made to touch pageable memory at an IRQL that is too high.

Parameter 1 : 0x00000082         Memory Address referenced
Parameter 2 : 0x02               IRQL at fault
Parameter 3 : 0x0                Read access attempt
Parameter 4 : 0x80515d2a         Address of instruction executing (if known)

开始时是用DISPATCH_LEVEL  因为是分页内存  我想不行

故改为PASSIVE_LEVEL  还是不行  错误相同   

谁用过这函数  给讲讲原理  谢谢!

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 291
活跃值: (213)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
2
KeSetAffinityThread()有两个参数,第一个是线程的KTHREAD结构指针(PKTHREAD),第二个是线程的亲合掩码(KAFFINITY)。返回原来的亲合掩码。
这个函数设置指定的线程只能被调度到某个/些CPU上运行(通过亲合掩码指定)。
如果目标线程正在运行中并且运行它的CPU与亲合掩码不符,将会被强制剥夺CPU,直到被重新调度为止。如果是Ready状态但尚未被调度也类似。

你访问了0x00000082地址?是不是第1个参数传NULL了?如果不是,可能函数访问了KPCR然后检测出有错??(fs:[00000082h] ???)
2008-4-20 04:12
0
雪    币: 70
活跃值: (74)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
我第一个参数传的是KeGetCurrentThread  

KPCR?  不知道  是不是这原因
2008-4-20 09:02
0
游客
登录 | 注册 方可回帖
返回
//