我们知道在NT以及Win2000的驱动中都有IRP队列的概念,这个队列可以由系统来管理,也可以创建由驱动来维护的队列。通过这个队列,实现IRP请求的串行化处理。但在CE的驱动中有IRP队列的概念吗?如何实现请求的串行化?希望各位高手给以解答,谢谢!
回复(8) 2004-11-26 08:29 来自版块 - Wince 程序开发
表情
wwei_wang还没搞定啊,等搞定之后再和大家分享 ;)(2004-12-03 15:01)
wxl_50685330:) 兄弟安装驱动的问题搞定了? 安装使用的是专门的工具还是自己写的安装代码?(2004-12-03 13:17)
wwei_wang同意wxl_50685330大哥的看法。(2004-12-03 12:13)
wxl_50685330恩,nt里面的irp排队其实好多时候也不必要,它提供用户自己对irp排队的机制,是为了让应用程序并行度提高,也就是应用采用异步方式时可以有很高的响应速度。这种方式适合那种大量传数据而又不需要太多握手的情况,比如大数据流传送应用。如果不自己管理irp,简单在上层进行数据操作时序控制...(2004-12-01 13:44)
wwei_wangwxl_50685330大哥说的没错,用EnterCriticalSection确实可以实现互斥访问。实际上正如大哥前面所说,串行可以在自己的应用中进行控制或限制。 我之所以问这个问题,是因为我想了解CE驱动与NT驱动的不同。在NT下,驱动可以把请求放在队列里面,然后逐个进行处...(2004-11-30 16:33)
wxl_50685330这个要看情况了,不知道你写的是什么驱动,有没有使用ms提供的中间层,有时候他会帮你做,如果确实没有就需要你自己做了,也不难,就用EnterCriticalSection就行了(2004-11-26 16:02)
wwei_wangwxl_50685330大哥说的是有道理,但我觉得这样并不是很灵活。 另外,如果我写的是单片的驱动程序,这时没有mdd层,那么怎么来控制对设备的互斥访问?如果需要互斥访问的话,是不是一定要我自己来实现?(2004-11-26 14:59)
wxl_50685330ce虽然也采用设备分层,但没有采用irp的机制,mdd有互斥机制来控制设备的访问,我觉得串行化问题要看具体情况。比如在应用中你可以在打开设备的时候指定一次只能一个应用打开设备。(2004-11-26 13:07)

返回顶部