阅读:1434回复:4
Art Baker书中 并口驱动的疑惑
Art Baker著《windows 2000设备驱动程序设计指南》(第二版)中有一个并口驱动的例子(第8章),我按照书中讲的自己做了一个并口回送连接器,运行光盘中的程序,为什么不能产生中断呢?
读写control,status寄存器都正常,control寄存器设好了,status就能对应读出,说明回送连接器没问题。 我还做了如下试验: 1 设置“控制面板/系统/硬件/设备管理/lpt1/使用给此端口的任何中断” 2 上升沿触发和下降沿触发都试了 写完control 跟着就读 status,发现ack位是跟着变的,但status寄存器第二位一直是1,没有中断,十分疑惑。 小弟是初学,请读过此书的学长和大侠们多深援助之手,一定给分! |
|
最新喜欢:yangng |
沙发#
发布于:2002-11-13 15:17
用IoReportDetectedDevice检查,返回失败,程序中的注释说这是由于设备被标准并口驱动占用,大侠们,我该怎么办呢?
|
|
板凳#
发布于:2002-11-14 10:27
问题基本解决
现在发现中断信号的确有,ISR也运行了,我之所以没有发现,是因为光盘中源程序(ISR例程)中的debug语句的条件编译为: #if dbg==1 。。。 #endif 而ntddk.h宏定义是 #define DBG 大小写出了问题,所以该条语句达不出来,我还以为没有执行ISR,进而误认为是中断没有发出来,真是弱智之极!(该书作者亦有毁人不倦之嫌:-) 但是我继续跟踪,发现ISR在“判断中断是否属于该驱动程序”时出了问题。它首先读取并口状态寄存器,再判断其第2位,如果该位为0说明中断是它自己的,否则推出。但是这一位始终为1,因此ISR到此就推出了,后面的程序不能执行,一直等着。 取消对这一位的判断,程序顺利的执行完了。 这说明并口有中断但status寄存器第二位不一定是0,为什么呢? 看来还要继续弱智几天。 请明白此事的大侠明示。 |
|
地板#
发布于:2004-07-30 10:53
我也试了那本书中的例子,但提示找不到ntddk.h,在头文件中明明有ntddk.h,里面也有东东,但为什么会有这种报错呢?我把ntddk.h拷贝到程序的目录下,一对问题又出来了:(
你通过了这一关,请指教一下!多谢! |
|
地下室#
发布于:2004-07-31 09:29
wangyupup请教一下,我也同样用的那本书中的例子,怎么提示的错误都是ntddk.h文件中的?我开始运行时找不到ntddk.h文件,我在ntddk中手动找到,然后拷贝到程序运行的目录下,找到了,但有提示了很多ntddk中的错误,请大侠不吝赐教!
|
|