WDM内存使用问题
PEPROCESS *_EPROCESS;
dwAddress = (ULONG)PsGetCurrentProcess();
Tee=(PEPROCESS)&dwAddress;
Tee=((PEPROCESS)Tee->ActiveProcessLinks.Blink)-0x0A0;
DbgPrint("addr:1 %0x 2 %0x\n",Tee,dwAddress);
dwAddress=(ULONG)Tee;
MK= ExAllocatePool(NonPagedPool,0x1000);
memcpy(MK,Tee,0x1000);//执行到这里出现蓝屏
……
请问如何解决?
注:这个程序是查找下一进程的信息。
问题点数:50、回复次数:4Top
1 楼heavyd(heavyd)回复于 2003-09-02 11:01:28 得分 0
顶Top
2 楼xiaohedou(小河豆(充电中.18%.))回复于 2003-09-02 11:47:57 得分 45
memcpy(MK,Tee,0x1000);//执行到这里出现蓝屏
1)看来是内存的错,可以使用BoundsChecker;mk问题嫌疑大点,在IDE/DEBUG里先看看MK/Tee是否越界;
2)查找进程的信息:要权限
Top
3 楼heavyd(heavyd)回复于 2003-09-02 14:34:35 得分 0
刚才调试了一下,看来Tee是越界了,地址为:fffe6b00,而dwAddress为:80e7938
奇怪,Tee->ActiveProcessLinks.Blink指向的就是前一个ActiveProcessLinks.Flink的指针,减去0X0A0正好指向PEPROCESS结构,这有什么不对吗?怎么会出现越界?Top
4 楼qiqiqiqi1(麦壳)回复于 2003-09-02 17:26:40 得分 5
这是地址空间的分配问题.
Top




