Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

Windows内核调试

帖子发起人: zyq8709   发起时间: 2011-06-05 15:03 下午   回复: 2

Print Search
帖子排序:    
   2011-06-05, 15:03 下午
zyq8709 离线,最后访问时间: 2019/8/6 21:05:02 zyq8709

发帖数前10位
注册: 2011-04-19
发 贴: 74
isr或dpc中执行IoCompleteRequest的问题!
Reply Quote
如果使用NtReadFile读取采用缓冲模式的设备时,最终在isr或Dpc例程中完成了该Irp,即调用IoCompleteRequest。那么在IoCompleteRequest内部将会把系统空间数据复制到用户地址空间。这里就有一个问题,由于isr或Dpc例程属于任意上下文,那么当他们执行时,用户地址空间的映射已有可能改变,那么他们进行复制时能否将数据复制到正确的用户空间缓冲区?
这种情况在鼠标键盘驱动中经常出现,他们是如何保证地址正确的呢?
IP 地址: 已记录   报告
   2011-06-05, 20:15 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: isr或dpc中执行IoCompleteRequest的问题!
Reply Quote
通用的机制是APC,可以参阅Walter Oney的WDM编程一书
鼠标键盘信息由Windows子系统(Win32K+CSRSS)处理,可以通过逆向调用传递到用户态
IP 地址: 已记录   报告
   2011-06-14, 16:08 下午
zyq8709 离线,最后访问时间: 2019/8/6 21:05:02 zyq8709

发帖数前10位
注册: 2011-04-19
发 贴: 74
Smile [:)] Re: isr或dpc中执行IoCompleteRequest的问题!
Reply Quote
多谢张老师的指点,我又看了一下代码就彻底明白了!
IP 地址: 已记录   报告
高端调试 » 软件调试 » Windows内核调试 » Re: isr或dpc中执行IoCompleteRequest的问题!

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.