Re: Irql值在内核中存储的位置?
Windows内核调试
Irql值在内核中存储的位置?
zyq8709
2011-06-22, 16:11 下午
我一直以为当前Irql值在KPRCB结构的Irql域中存储的,而ReactOs中也是这样处理的。但是我在调winXP
sp2代码时发现,xp并非在此处存储。而XP的KfRaiseIrql中几行关键代码是这样的:
806d1279 b6d1 mov dh,0D1h
806d127b 0fb68a58126d80 movzx ecx,byte ptr hal!HalpIRQLtoTPR (806d1258)[edx]
806d1282 a18000feff mov eax,dword ptr ds:[FFFE0080h]
806d1287 890d8000feff mov dword ptr ds:[0FFFE0080h],ecx ds:0023:fffe0080=00000000
806d128d c1e804 shr eax,4
806d1290 0fb68088c06d80 movzx eax,byte ptr hal!HalpVectorToIRQL (806dc088)[eax]
其中也并没有涉及到KPRCB,而是用到了ds:[FFFE0080h],为何XP不用KPCR,而ReactOS用了,这有什么本质影响吗?
Re: Irql值在内核中存储的位置?
格蠹老雷
2011-06-23, 12:02 下午
代码中的地址(0FFFE0080h)是APIC的寄存器,映射到这个位置...