阅读:1810回复:12
Share memory
Please tell me how to share memory between drivers and application?
|
|
沙发#
发布于:2002-05-10 14:30
那要看在98还是nt/2000下
|
|
|
板凳#
发布于:2002-05-10 14:35
本站的专栏文章里面有!
|
|
地板#
发布于:2002-05-10 14:37
你多在论坛泡泡会知道的啦。 :D :D :D
|
|
地下室#
发布于:2002-05-10 14:44
你以为是方便面啊!泡
|
|
5楼#
发布于:2002-05-10 14:49
你们的意思是不是用ZwMapViewOfSection,ZwOpenSection,我试了一下,不行!
|
|
6楼#
发布于:2002-05-10 14:50
呵呵,我觉得和澡堂很象的啦,天天都泡泡一下,比较爽 :D :D :D
|
|
7楼#
发布于:2002-05-10 14:50
谁这样说了,站出来,让我先踹两脚
|
|
|
8楼#
发布于:2002-05-10 14:53
NT/2K和9x的方法不一样的。
|
|
9楼#
发布于:2002-05-10 14:57
就请你说W2000了,我总共只有6分了,全给你了,拜托了!
|
|
10楼#
发布于:2002-05-10 15:02
2000下缓冲区共享有两种方法
一种是 directio 另一种是 bufferio 总而言之就是在用户态程序中分配好缓冲区,然后将指针使用deviceiocontrol传给内核态驱动程序使用, 建议看看walter oney的书 |
|
|
11楼#
发布于:2002-05-10 15:06
为什么不要我回答9x的呢? :D
当应用程序发起一个读或写操作时,通过给出一个用户模式虚拟地址和长度,应用程序向I/O管理器提供了一个数据缓冲区。正如我在第三章中提到的,内核模式驱动程序几乎从不使用用户模式虚拟地址访问内存,因为你不能把线程上下文确定下来。Windows 2000为驱动程序访问用户模式数据缓冲区提供了三种方法: 在buffered方式中,I/O管理器先创建一个与用户模式数据缓冲区大小相等的系统缓冲区。而你的驱动程序将使用这个系统缓冲区工作。I/O管理器负责在系统缓冲区和用户模式缓冲区之间复制数据。 在direct方式中,I/O管理器锁定了包含用户模式缓冲区的物理内存页,并创建一个称为MDL(内存描述符表)的辅助数据结构来描述锁定页。因此你的驱动程序将使用MDL工作。 在neither方式中,I/O管理器仅简单地把用户模式的虚拟地址传递给你。而使用用户模式地址的驱动程序应十分小心。 |
|
12楼#
发布于:2002-05-10 15:47
为什么不要我回答9x的呢? :D |
|