阅读:1140回复:3
DIRECT I/O探讨!!!???
请问:
(1)在DIRECT I/O中,驱动程序使用应用程序申请的内存,是否需要保护机制?如何实现? (2)在DIRECT I/O中,从ReadFile传递的缓存是分页内存,而StartIo DPC的运行级别高于PASSIVE―LEVEL,如何处理? (3)IO_REMOVE_LOCK 与 KSPIN_LOCK的区别?在何处使用? |
|
沙发#
发布于:2003-06-23 09:26
回答
(1)在DIRECT I/O中 应用程序申请的内存是用内存描述表的方式传到驱动中的,在IRP 中是 IRP->MdlAddress ,一般不需要特殊的保护,当然你不要访问越界。MdlAddress 的释放由I/O 管理器负责。 |
|
|
板凳#
发布于:2003-06-23 13:52
Mdl描述的是存在于在物理内存的一块内存。
没有仔细看书? |
|
地板#
发布于:2003-07-09 23:38
请问:
(1)一般无需保护,在io操作从驱动返回前,线程被阻塞,不可能进行其他操作,当然,你要保证此时不被其他线程操作,但这实际上是每个共享数据都需要注意的问题。 (2)在io传导驱动程序前,io管理器已经将这些分页内存锁定了,可以保证不发生缺页 (3) KSPIN_LOCK 你可以任意定义,而某个IO_REMOVE_LOCK 只有一个。 |
|
|