cross_sky
驱动小牛
驱动小牛
  • 注册日期2004-06-17
  • 最后登录2012-09-07
  • 粉丝0
  • 关注0
  • 积分858分
  • 威望727点
  • 贡献值0点
  • 好评度77点
  • 原创分0分
  • 专家分0分
阅读:2150回复:2

如何检验一个内存地址是否有效

楼主#
更多 发布于:2009-03-09 21:34
             我从应用申请一块内存,通过一个直接方式的I/O请求传递给驱动,在DeviceIoCtrol中相应的IO_CTL处先得到系统虚拟地址,然后锁定,用一个全局变量保存该地址,然后在中断服务例程ISR中向这块内存拷贝数据,有没有什么好的策略在拷贝前检查这个内存地址的有效性,因为有时应用异常退出而驱动不知道继续往这个地址写数据会导致蓝屏死机。请高手指点!谢谢!
sky
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
沙发#
发布于:2009-03-10 09:49
内核分配的内存: MmIsAddressValid
应用层分配的,驱动在该应用层上下文访问的
ProbeForRead
ProbeForWrite
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
cross_sky
驱动小牛
驱动小牛
  • 注册日期2004-06-17
  • 最后登录2012-09-07
  • 粉丝0
  • 关注0
  • 积分858分
  • 威望727点
  • 贡献值0点
  • 好评度77点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-03-11 18:32
感谢znsoft的回答,昨天没上来,问题已经解决了,谢谢!
sky
游客

返回顶部