阅读:993回复:6
我有问题,关于IRP
请教各位,同步IRP和异步IRP的区别.
在同步IRP的执行过程中是不是独占CPU 如果我想利用DMA读写数据,应该用那种IRP 多谢各位 |
|
沙发#
发布于:2002-11-07 11:48
两种都可以,而且我在DMA的driver里面,两种方式都试过。所谓同步IRP就是一个IRP传下去,在它完成返回后,App才能做后面的工作。而异步IRP就不一样,app把IRP传下去,就不在管它,不用等driver完成以后就可以做其它的事情。如果你的App有大量工作要处理,你最好用异步IRP!
|
|
板凳#
发布于:2002-11-07 11:54
如果你想利用DMA读写数据,应该用异步IRP
|
|
|
地板#
发布于:2002-11-07 12:00
如果你想利用DMA读写数据,应该用异步IRP 能告诉我原理吗? |
|
地下室#
发布于:2002-11-07 12:04
两种都可以,而且我在DMA的driver里面,两种方式都试过。所谓同步IRP就是一个IRP传下去,在它完成返回后,App才能做后面的工作。而异步IRP就不一样,app把IRP传下去,就不在管它,不用等driver完成以后就可以做其它的事情。如果你的App有大量工作要处理,你最好用异步IRP! 我的驱动要生成一个IRP让底层驱动读写数据.现在我的IRP是同步的,但效率不高 :( |
|
5楼#
发布于:2002-11-07 12:16
如果你好好分析,你会发现两种方式效率都差不了多少。要想提高传输效率,你可以考虑用基于通用缓冲区方式的DMA传输!也就是说你的driver作的工作越少,效率就会越高!
|
|
6楼#
发布于:2002-11-07 12:34
[quote]如果你想利用DMA读写数据,应该用异步IRP 能告诉我原理吗? [/quote] 举例 如果用阻塞的socket,在网络通讯时你的程序就等待,什么都干不了 但用异步socket,网络通讯是通讯,你的程序还可以干其它事情 |
|
|