阅读:1901回复:2
dma问题:武安河的原例可以正常运行,我自己修改的为何不行?
应该是这个irp管理出的问题,我用softice跟踪readfile中I.readsize()可以正常访问,可是进入回调函数后,访问I.readsize()就出问题了。
网上查说: 当采用系统自动创建的IRP队列时,不采用驱动程序自己定义的队列时(即KDriverManagedQueueEx不用这个定义的队列时),采用上述两种方法编写dma准备就绪回调函数就没没有何的错误,程序就能够正确执行。 可是不用KDriverManagedQueueE这个,怎么用系统自动创建的irp队列呢? 我还要用deviceiocontrol,所以必须自己过这一关 希望大虾联系我:qq809610475 |
|
沙发#
发布于:2007-11-08 17:50
你用的是3.2吧? 3.2 的Wizard是不能给你生成 系统管理的队列式的 驱动框架的,而3.1可以。你可以试试3.1的向导就知道了
但是用3.2也可以做出 由系统管理IRP队列的 框架形式,这个你要自己看武安和的书关于IRP排队那一章,以及他的附件光盘中的9054 的例子。 如果你用的是驱动管理的队列, 在当运行到回调函数中,你在softice中打开WL窗口,你可以看看此时IRP的样子,你会发现很多的????, 这说明你此时的IRP是不正确的,那怎么办呢?从队列中把当前的IRP取出来。这就是两种管理队列的不同之处。 你搜搜zhangwei_351286的帖子,能给你很多的启发的 |
|
板凳#
发布于:2007-11-09 17:48
当然zhangwei_351286 的帖子也有错误,这个你得多试试
|
|