阅读:1686回复:2
我是菜鸟我怕谁!!(2)
怎么没有人回答我前面的问题的?分数太低?
我只好提高分数了(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? |
|
|
沙发#
发布于:2001-08-21 13:39
你可以看一下机械工业出的《Windows NT设备驱动程序设计指南》的148页,那里有详细地说明。
我感觉应该是先调用IoConnectInterrupt函数,禁止中断实际上应该是一种端口写操作,通过写操作禁止中断,然后调用IoConnectInterrupt,然后调用KeSynchronizeExecution初始化中断。 |
|
|
板凳#
发布于:2001-08-22 12:29
致大虾hecao兄:
你所说的很对。小弟说的例子出处正是该书的WDM2程序中的StartDevice函数,不过小弟想程序用KeSynchronizeExecution函数应该是为了提升IRQL到InternalObject的等级来运行屏蔽中断的程序,而小弟却找不到初始化InternalObject的地方。所以小弟苟且认为程序此处可能有点错误,对么?你可要指正。 |
|
|