阅读:1440回复:9
Dispatch level 可以访问虚拟内存吗?(20分!)
所用os为w2k
我想从用户态通过ioctrl发送一个虚拟地址给内核,在dispatch例程中启动dma向预先申请好的固定buffer传送数据,此时返回nt_success,然后在应用程序中等待event(预先创建并已传递给内核),dma结束后产生中断,在中断dpc中将固定buffer数据复制到传递过来的虚拟地址上,此时虚拟地址不能访问,是因为在dispatch level不能访问分页内存吗?我该怎么做? |
|
最新喜欢:![]() |
沙发#
发布于:2003-08-26 20:18
sorry,没有注意时间。 :D
|
|
板凳#
发布于:2003-08-26 18:51
晕~ 一年前的贴子都翻上来了 :D
后来没有用固定缓冲区 那时候我好小气啊,才给了这么几分,呵呵 :P :P |
|
地板#
发布于:2003-08-26 18:34
用METHOD_DIRECT方式,DMA操作后,数据就到MDL指示的buffer去了。
你还要copy什么? |
|
地下室#
发布于:2003-08-26 16:20
ding~~~~~~~~~~
|
|
5楼#
发布于:2002-07-05 15:15
难道您不可以等DPC完成后到降低的level时候再做拷贝吗? |
|
|
6楼#
发布于:2002-07-05 12:37
要是采用系统线程应该怎么做呢?
我的应用就是想从卡上取得一些数据,由于数据准备好和dma传送都需要时间,我又不想在内核态等待dma传输完成,所以我就想用中断和事件配合的方式来实现,通常对于这种情况是怎么做的呢? |
|
7楼#
发布于:2002-07-05 12:36
要是采用系统线程应该怎么做呢?
我的应用就是想从卡上取得一些数据,由于dma传送需要时间,我又不想在内核态等待dma传输完成,所以我就想用中断和事件配合的方式来实现,通常对于这种情况是怎么做的呢? |
|
8楼#
发布于:2002-07-05 11:44
不要在驱动中访问用户模式的内存
因为驱动不知道当前的上下文是那个 |
|
|
9楼#
发布于:2002-07-05 11:15
可不可以试一下采用系统线程或者工作者线程把LEVEL降低到可以操纵虚拟内存的环境,那样就可以访问了。
|
|
|