阅读:2134回复:7
PsSetCreateProcessNotifyRoutine 问题请教
我的代码中通过调用
PsSetCreateProcessNotifyRoutine(ProcessCallback,FALSE) 获得了新建进程的ID、以及其父进程ID 在DriverUnload函数中我又调用 PsSetCreateProcessNotifyRoutine(ProcessCallback,TRUE) 对回调函数进程了移除。 但是我现在的问题是: 代码在加载到DriverMonitor运行正常:每次新建进程都能正确显示ID信息; 但是,当我卸载驱动,中止其运行后,再执行新建进程的动作就会导致机器蓝屏重启。 我想大概原因是不是我的驱动没卸载干净,每次新建进程都会跳转到我的驱动执行,由于找不到驱动而蓝屏,虽然这么猜测,但不知具体如何解决此问题,高手们请赐教! |
|
沙发#
发布于:2007-06-28 15:28
详细的Bugcheck Analysis中描述为:
driver_unloaded_without_cancelling_pending_operations (ce) a driver unloaded without cancelling timers,DPCs,worker threads,etc. 但我看了,我的driverunload函数为: pssetcreateprocessnotifyroutine(processcallback,true); iodeletesymboliclink(&strlink); iodeletedevice(driverobjcet->deviceobject); 该移除的都移除了 |
|
板凳#
发布于:2007-06-28 11:39
哎,研究了好久,终于知道windbg怎么用了,windbg里显示的错误信息如下:
fatal system error: 0x000000ce(0xFA0974F6,0x00000008,0xFA0974F6,0x00000000) driver at fault: createprocess.sys. break instruction exception - code 80000003 (first chance) |
|
地板#
发布于:2007-06-26 21:03
可以使用虚拟机,这样可以在出错时暂停而获得蓝屏提示
使用windbg远程连接,这样可以在蓝屏前得到通过kdPrint输出的内容 在关键行打出日志,就知道哪个地方出问题 不过如果出错很快,好像来不及输出到管道,windbg就看不到,这个不知道如何解决 |
|
地下室#
发布于:2007-06-26 15:02
一闪就蓝屏了,就一瞬间,我来不及看清楚错误代码是什么。
楼上的能不能干脆告我驱动运行时,蓝屏的情况,如何获得错误代码吧!不好意思,新学的,又安排了任务,所以只好求助! |
|
5楼#
发布于:2007-06-26 11:55
yun, 给出你dump的信息啊或debug显示,否则怎么判断
|
|
6楼#
发布于:2007-06-26 11:47
什么意思,楼上的能不能说得详细点
|
|
7楼#
发布于:2007-06-26 11:38
dump、windbg
|
|
|