阅读:1294回复:19
讨论:非排队的IRP方式和系统排队IRP的方式
在驱动中对IRP的处理方式,可以把IRP排队,应用程序线程接着往下执行,也可以不进行排队,当IRP完全处理完后,应用程序才往下执行,我的理解是这样的,但在具体的编程中采取哪种方式,我看书上说看设备的处理能力和驱动怎样设计,在这里我不太明白,大家讨论一下可以吗!
|
|
|
沙发#
发布于:2003-03-31 09:22
用户被禁言,该主题自动屏蔽! |
|
板凳#
发布于:2003-03-31 09:22
我的理解是这样的,上层软件如果使用的异步存取方式对驱动进行访问时,应用程序就不会等待驱动的结果,如果使用是同步方式的话就有可能等待影响结果返回
|
|
地板#
发布于:2003-03-31 09:39
我的设备每次只能同时处理一个输入/输出操作,那么选择是同步还是异步呢??
|
|
|
地下室#
发布于:2003-03-31 09:46
用户被禁言,该主题自动屏蔽! |
|
5楼#
发布于:2003-03-31 09:50
好象只能选择异步吧,假如我选择同步,我的硬件每次只能处理一个IRP,而且处理速度很慢,那么我的应用程序发生阻塞,是不是导致效率很低,导致死机!
|
|
|
6楼#
发布于:2003-03-31 09:52
用户被禁言,该主题自动屏蔽! |
|
7楼#
发布于:2003-03-31 09:55
我的板子是个ISA的,用到DMA,我看了很多的资料说,做DMA要异步的IRP,我觉得DMA的处理速度很快,况且,我的块很小,几K,我感觉用同步IRP也可以吧!
|
|
|
8楼#
发布于:2003-03-31 10:08
用户被禁言,该主题自动屏蔽! |
|
9楼#
发布于:2003-03-31 10:33
最好还是用异步方式,也没什么麻烦的呀。 我理解DMA的执行过程是在硬件准备好后通过ISR和DPC通知应用程序发请求的,所以不存在乱套的问题! |
|
|
10楼#
发布于:2003-03-31 10:41
用户被禁言,该主题自动屏蔽! |
|
11楼#
发布于:2003-03-31 10:54
我不理解怎么用IRP去启动一次DMA???能启动硬件??
|
|
|
12楼#
发布于:2003-03-31 11:41
用户被禁言,该主题自动屏蔽! |
|
13楼#
发布于:2003-03-31 11:56
我知道你的意思,那样也能实现,但是我不知道那个怎样实现,我看了DS的一个关于PCI的DMA的例子,就是在IRP的例程中启动DMA,好象ISA的系统DMA不能这么做吧!能和你在网上聊聊吗?你的QQ是多少??
|
|
|
14楼#
发布于:2003-03-31 12:16
用户被禁言,该主题自动屏蔽! |
|
15楼#
发布于:2003-03-31 13:39
我是用DS写的,那本书是DDK的,DS的DMA模式好象改变了很多,不知道借鉴的意义大不大,你用DS做过DMA吗?
|
|
|
16楼#
发布于:2003-03-31 14:19
用户被禁言,该主题自动屏蔽! |
|
17楼#
发布于:2003-03-31 14:21
谢谢,我找书,看看!
|
|
|
18楼#
发布于:2003-03-31 15:14
我的意思是在IRP例程中启动DMA。 怎么在IRP中启动DMA? |
|
|
19楼#
发布于:2003-03-31 15:21
用户被禁言,该主题自动屏蔽! |
|