changys
驱动小牛
驱动小牛
  • 注册日期2004-11-15
  • 最后登录2008-08-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望15点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1692回复:15

art baker [Window2000 Dirver]书中第八章的中断程序,有人调通过么?

楼主#
更多 发布于:2005-05-13 10:35
我按照书中讲的方法去连接并口线, 自制了一个LoopBack Connector但是在调试第八章的的程序时,就是产生不了中断,有人调通过么?
想请教一下.
changys
驱动小牛
驱动小牛
  • 注册日期2004-11-15
  • 最后登录2008-08-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望15点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-05-13 11:37
可以的 !!
把 pin10 ack 先接地(本身高电平),放开便可中断.
 


楼上的兄弟, 我对你所说的 \"放开便可中断\"不太理解,
是先接地,在调试程序的过程中 在把这根线剪断么?
那也太土了点

如果我想把这个程序调试通过, 具体该怎么做呢?
我是这么做的:
1.先按照书上把并口线接好
2.安装第8章的驱动
3.执行user mode的程序
4.等待中断的产生,
可是中断并不产生, 程序就这样挂了
真的被中断了:)
changys
驱动小牛
驱动小牛
  • 注册日期2004-11-15
  • 最后登录2008-08-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望15点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-05-13 13:55
[quote] 在调试程序的过程中 在把这根线剪断么?


它是要一正何脉冲,故先接地後放开,我是串一开关在线上的,把根线剪断也可 !! 但这真的太土了,下一次又要接上去.

另外你的user mode的程序可能没产生中断,也要看你的设备管理器有没有用这中断,当初我没注意这点 !!! [/quote]

我按照你的方法还是没有产生中断,在设备管理器中我已经看到了并口有个7号中断,

你的方法和书上说的不太一样,书上是把pin10 和 pin16连接在一起,
你能把你的调试步骤描述的详细些么?
changys
驱动小牛
驱动小牛
  • 注册日期2004-11-15
  • 最后登录2008-08-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望15点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-05-13 17:00
To KMK:
  谢谢KMK,我用你的方法确实产生了中断,我想问一下你在哪里找到中断的依据的?[先将pin10 接地然后断开]

To bmyyyud:
 \"也可以用SoftIce,用IDT指令看看\"
 能描述一下使用这个IDT指令的过程么?
changys
驱动小牛
驱动小牛
  • 注册日期2004-11-15
  • 最后登录2008-08-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望15点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-05-13 18:30
To KMK:
为什么会出现这种情况:
有时候调用三次Isr函数 再调用一次Dpc函数,
有时候调用两次Isr函数 再调用一次Dpc函数,
有时候调用一次Isr函数 再调用一次Dpc函数?

就这个程序而言,我觉得Isr 和 Dpc的关系应该是1:1的才对啊?
这说明了什么问题呢?
我跟踪了一下IoRequestDpc这个宏只有在第一次的时候返回一个TRUE,其余时候都是FALSE, 直到DPC处理完毕,下一个中断来临!


BOOLEAN InterruptIsr(IN PKINTERRUPT Interrupt, IN OUT PVOID Context)
{
PDEVICE_OBJECT DeviceObject = Context;

KdPrint( (\"Interrupt.sys: Interrupt Service Routine\\n\") );

/* We should check if the interrupt comes from us and return */

IoRequestDpc(DeviceObject,
DeviceObject->CurrentIrp,
NULL);

return TRUE;
}


changys
驱动小牛
驱动小牛
  • 注册日期2004-11-15
  • 最后登录2008-08-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望15点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-05-16 09:49
To 楼上的大侠们:

像这样一个中断来了,ISR会被调用好多次的道理是什么呢?

怎么才能从软件和硬件上避免呢?

硬件是不是如qfzcx所说,
\"并个小电容\"就可以了, 不太理解其原理,谁能解说一下?

游客

返回顶部