本论坛为只读模式,仅供查阅,不能注册新用户,不能发帖/回帖,有问题可发邮件 xikug.xp (^) gmail.com
查看: 3609|回复: 4

isr或dpc中执行IoCompleteRequest的问题! [复制链接]

Rank: 1

发表于 2011-6-5 18:53:12 |显示全部楼层
如果使用NtReadFile读取采用缓冲模式的设备时,最终在isr或Dpc例程中完成了该Irp,即调用IoCompleteRequest。那么在IoCompleteRequest内部将会把系统空间数据复制到用户地址空间。这里就有一个问题,由于isr或Dpc例程属于任意上下文,那么当他们执行时,用户地址空间的映射已有可能改变,那么他们进行复制时能否将数据复制到正确的用户空间缓冲区?
这种情况在鼠标键盘驱动中经常出现,他们是如何保证地址正确的呢?

Rank: 1

发表于 2011-6-6 00:24:54 |显示全部楼层
求真相。

Rank: 9Rank: 9Rank: 9

发表于 2011-6-7 19:21:36 |显示全部楼层
他们都是复制到systembuffer中的,在io完成以后返回的时候io管理器把systembuffer复制到userbuffer
悟空,退下,为师一个人就够了

Rank: 1

发表于 2011-6-8 12:59:10 |显示全部楼层
必须非分页内存~~~

Rank: 1

发表于 2011-6-11 01:37:11 |显示全部楼层
special kernel APC.
您需要登录后才可以回帖 登录 | 立即加入

Archiver|手机版|第8个男人 - 论坛为只读模式,仅供查阅

GMT+8, 2019-7-17 13:49 , Processed in 0.029365 second(s), 8 queries .

Design by pvo.cn

© 2011 Pvo Inc.

回顶部