banana
驱动牛犊
驱动牛犊
  • 注册日期2001-07-28
  • 最后登录2001-12-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1687回复:2

我是菜鸟我怕谁!!(2)

楼主#
更多 发布于:2001-08-21 11:42
怎么没有人回答我前面的问题的?分数太低?
我只好提高分数了(20)

现在我又有问题了:在前述的书中的WDM2程序,在StartDevice函数中,有为了连上中断,先屏蔽中断:
KeSynchronizeExecution( dx->InterruptObject, (PKSYNCHRONIZE_ROUTINE)DisableDeviceInterrupts, (PVOID)dx)

而在DDK文档中有KeSynchronizeExecution的参数说明:
“Interrupt Is a pointer to a set of interrupt objects. This pointer was returned by IoConnectInterrupt”

说明InterruptObject应调用在IoConnectInterrupt前。

但在该书的例子中,该参数却调用在IoConnectInterrupt函数前。
InterruptObject在那初始化了?
What is matter?
趁着这奈何天,伤怀日,寂寥时,试谴愚衷!
banana
驱动牛犊
驱动牛犊
  • 注册日期2001-07-28
  • 最后登录2001-12-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-08-22 12:29
致大虾hecao兄:
   你所说的很对。小弟说的例子出处正是该书的WDM2程序中的StartDevice函数,不过小弟想程序用KeSynchronizeExecution函数应该是为了提升IRQL到InternalObject的等级来运行屏蔽中断的程序,而小弟却找不到初始化InternalObject的地方。所以小弟苟且认为程序此处可能有点错误,对么?你可要指正。
趁着这奈何天,伤怀日,寂寥时,试谴愚衷!
hechao
驱动牛犊
驱动牛犊
  • 注册日期2001-06-29
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-08-21 13:39
你可以看一下机械工业出的《Windows NT设备驱动程序设计指南》的148页,那里有详细地说明。
我感觉应该是先调用IoConnectInterrupt函数,禁止中断实际上应该是一种端口写操作,通过写操作禁止中断,然后调用IoConnectInterrupt,然后调用KeSynchronizeExecution初始化中断。
鬼子就是鬼子,永远变不成人!
游客

返回顶部