应用程序通过调用ReadFile来读数据,而在驱动程序里不定马上就有数据,需要等待硬件产生,我想在DispatchRead中把当前的线程挂起,当中断来时再处发它,然后返回给应用程序。该怎么做?哪位大侠能够帮帮忙。
回复(5) 2004-06-24 10:23 来自版块 - 内核编程
表情
seaquesterStartIO例程只能起同步作用。 实际上,irp被startio例程处理时,还是有可能读不到数据。 他的驱动不是需要等待硬件产生中断吗?在DPC里面完成这个IRP就行。如果不需要启动硬件读数据(比如DMA),StartIo就没有什么用。(2004-06-24 16:42)
escapeStartIO例程只能起同步作用。 实际上,irp被startio例程处理时,还是有可能读不到数据。(2004-06-24 16:00)
seaquester应用程序通过调用ReadFile来读数据,而在驱动程序里不定马上就有数据,需要等待硬件产生,我想在DispatchRead中把当前的线程挂起,当中断来时再处发它,然后返回给应用程序。该怎么做?哪位大侠能够帮帮忙。 可以使用队列来实现。 1. 收到IRP后,IoMarkI...(2004-06-24 15:34)
EdmundChen这样做可能导致应用程序要一直在读数据,从而CPU占有率升高(2004-06-24 14:05)
escape我觉得可以让read历程和中断历程共一块数据。 这样就不需要触发机制了。read有数据就返回数据, 否则就返回空。效率也高一些。不会阻塞用户线程。(2004-06-24 11:04)

返回顶部