阅读:1734回复:7
我真的黔驴技穷了
我现在中断服务例程中想调用一个dpc,可是我不知道为什么,一进入dpc后,sice就跳出来说break due to page Fault(0Eh) Fault=0000 (而中断isr肯定已经进入了,因为我用sice可以跟踪看到),但我要通知应用程序就必须要一个dpc,于是我定制了一个dpc,用KeInsertQueueDpc(&pdx->CustomDpc, fdo, pdx);调用我的DpcRoutine,可是一进去就发生如上的错误,是不是还要设置什么?我把试者把DpcRoutine中的处理代码全部去掉,还是老样子,太可怕了,KDPC CustomDpc是在设备扩展中定义的,不会分页,KeInsertQueueDpc(&pdx->CustomDpc, fdo, pdx)也是在非分页区做的,我真的黔驴技穷了。
|
|
沙发#
发布于:2005-03-16 17:22
队列初始化没有,DPCRountine也该在非分页区
|
|
|
板凳#
发布于:2005-03-17 08:30
谢谢大哥指点,请问大哥,队例初始化应该怎么做?我以前没有做过驱动,书上好象也没有讲
|
|
地板#
发布于:2005-03-17 09:12
我可能是dpc队例没有初始化,但是我不知道这怎么做,我只是在AddDevice中对我的dpc这样作了初始化KeInitializeDpc(&pdx->CustomDpc, (PKDEFERRED_ROUTINE) DpcRoutine, fdo);(CustomDpc是我在设备扩展中定义的dpc,DpcRoutine是dpc例程)我不知道还要什么dpc队例初始化?是我在isr中调用了KeInsertQueueDpc后sice就跳出来了,而且我DpcRoutine目前是空函数,我如果封掉KeInsertQueueDpc后就没事了,在ds的monitor中还能看到我在isr中每25毫秒输出的打印信息。我在书上看到是有这么一个dpc队例,可我真不知道怎么初始化它。希望大哥指点
|
|
地下室#
发布于:2005-03-17 09:27
KeInitializeDpc
|
|
|
5楼#
发布于:2005-03-17 09:30
强烈建议看看ddk
书《windows nt 设备驱动程序设计指南》 |
|
|
6楼#
发布于:2005-03-17 10:49
我只是在AddDevice中对我的dpc这样作了初始化KeInitializeDpc(&pdx->CustomDpc, (PKDEFERRED_ROUTINE) DpcRoutine, fdo);(CustomDpc是我在设备扩展中定义的dpc,DpcRoutine是dpc例程)我不知道还要什么dpc队例初始化?楼上兄台只说KeInitializeDpc,我已经做了,不知道是不是做的不对?
|
|
7楼#
发布于:2005-03-17 10:50
我只是在AddDevice中对我的dpc这样作了初始化KeInitializeDpc(&pdx->CustomDpc, (PKDEFERRED_ROUTINE) DpcRoutine, fdo);(CustomDpc是我在设备扩展中定义的dpc,DpcRoutine是dpc例程)我不知道还要什么dpc队例初始化?楼上兄台只说KeInitializeDpc,我已经做了,不知道是不是做的不对?可这样结果还是老样子。
|
|