阅读:1211回复:6
VXD中的内存问题
我的程序需要在VXD中直接引用一段应用层分配的内存,在WIN2K中我已经做到了,请问一下在VXD中该怎么做?
另:在VXD中用malloc分配的内存是否可以锁定使之不被交换到页面文件中? 谢谢 |
|
|
沙发#
发布于:2002-10-21 17:59
你是否搞错了,你能在Driver中直接引用Ring3的地址空间吗?我是说你没有进行地址转换直接引用。
我们经常提到在Win9X到WinXP中应用程序有4G地址空间,其中2G为Ring3、2G为Ring0(通常情况下),并且这是虚拟地址空间呀?通过Window的分段来实现的,同时分页机制也可能存在,因此你在Ring3中对应进程1的虚拟地址和进程2的同一个虚拟地址是不一样的,有着不同的物理地址,你怎么能这样应用呢?除非你保证Driver中不进行中断、任务切换等?如果TR等被修改恐怕就有蓝屏现象咯,当然如果只是读出现的几率小些,但是写就不好说了。 我不知道你是不是想实现一种Ring0、Ring3共享内存的方法,如果是这样,你可在网上收索一下,有很多这样的文章 我的程序需要在VXD中直接引用一段应用层分配的内存,在WIN2K中我已经做到了,请问一下在VXD中该怎么做? |
|
|
板凳#
发布于:2002-10-21 20:13
不好意思,没有说清楚。
我就是想让VXD与APP共享一块内存而已。 |
|
|
地板#
发布于:2002-10-22 18:43
TMD!我找到的网址都不能访问了:(
哪位能提供一个可以访问的? 谢了先 |
|
|
地下室#
发布于:2002-10-22 18:55
我的程序需要在VXD中直接引用一段应用层分配的内存,在WIN2K中我已经做到了,请问一下在VXD中该怎么做? 在VxD把app分配的内存lock,保证他不被换出去。具体函数忘了。 :D好像是什么page_lock什么的。看help吧。 |
|
5楼#
发布于:2002-10-25 09:20
我做到了,
分配锁定的内存用_PageAllocate 锁定来自应用层的内存用LinPageLock 不过真是奇怪,_PageAllocate不是有8个参数吗?可是我的编译器提示我它有10个参数。有人能解释一下吗? |
|
|
6楼#
发布于:2002-10-25 09:31
VtoolsD的PageAllocate有十个参数,与DDK不同
|
|
|