chrys
驱动小牛
驱动小牛
  • 注册日期2002-05-30
  • 最后登录2008-07-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2258回复:11

Irp->MdlAddress缓冲里的数据用DbgPrint怎么显示出来?

楼主#
更多 发布于:2003-12-27 19:19
在我的usb设备驱动程序里,我想在每次urb完成时将收到的数据通过DbgPrint()函数显示出来,由于我的IO读写方式为直接IO方式,所以读写例程里用到了Irp->MdlAddress成员,也就是说,完成例程里收到的数据应该是在缓冲Irp->MdlAddress中的,如果我直接用DbgPrint来显示Irp->MdlAddress里的数据,结果是错误的,如果我用MmGetSystemAddressForMdl(Irp->MdlAddress)来获取它的虚拟地址,然后再用DbgPrint来显示这个虚拟地址里的数据就会出现蓝屏错误,我先后依次用MmGetMdlVirtualAddress()、MmGetSystemAddressForMdlSafe()来代替MmGetSystemAddressForMdl()也同样出现了蓝屏错误

请问:我要怎样做才可以显示Irp->MdlAddress缓冲中的数据呢?
天才来自勤奋 知识要靠学习 [url= http://ndxz.126.com]――欢迎来我家做客――[/url]
yangmin26
驱动小牛
驱动小牛
  • 注册日期2003-02-22
  • 最后登录2012-11-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-12-27 21:59
10分太少,不回答~
YM KILL YOU
chrys
驱动小牛
驱动小牛
  • 注册日期2002-05-30
  • 最后登录2008-07-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-12-28 12:58
10分太少,不回答~


分数不是问题,大家相互学习嘛,你要多少分,只要我有我不会吝啬的。请回答――先――
天才来自勤奋 知识要靠学习 [url= http://ndxz.126.com]――欢迎来我家做客――[/url]
lexpress
驱动牛犊
驱动牛犊
  • 注册日期2003-11-27
  • 最后登录2003-12-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-12-28 18:20
呵呵,你为什么非要在驱动里显示数据呢?
把数据传到应用程序里再显示不是更好吗?
chrys
驱动小牛
驱动小牛
  • 注册日期2002-05-30
  • 最后登录2008-07-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-12-29 12:26
呵呵,你为什么非要在驱动里显示数据呢?
把数据传到应用程序里再显示不是更好吗?


因为我的程序现在有问题了,不知道是驱动收数据的时候就错了,还是在应用层错了,所以希望能在驱动里将收到的数据显示出来。
天才来自勤奋 知识要靠学习 [url= http://ndxz.126.com]――欢迎来我家做客――[/url]
adsl123
驱动牛犊
驱动牛犊
  • 注册日期2003-12-02
  • 最后登录2004-01-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-12-31 21:42
那在应用程序里怎么显示啊???
有教材的话给我发
hewh2003@hotmail.com
谢谢你的热情
江湖术士
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-01-01 13:02
[quote]呵呵,你为什么非要在驱动里显示数据呢?
把数据传到应用程序里再显示不是更好吗?


因为我的程序现在有问题了,不知道是驱动收数据的时候就错了,还是在应用层错了,所以希望能在驱动里将收到的数据显示出来。 [/quote]
如果你驱动收到的是错误的数据,那么你的应用层就得不到数据了!
因此问题很可能出在设备方与驱动的交互上。
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-01-01 13:03
那在应用程序里怎么显示啊???
有教材的话给我发
hewh2003@hotmail.com
谢谢你的热情


数据收到应用程序里的buffer里,那不是想怎么显示就怎么显示吗?可以参考cy的控制面板的源程序ezmr。
chrys
驱动小牛
驱动小牛
  • 注册日期2002-05-30
  • 最后登录2008-07-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-01-08 08:51
我忘了申明一点了,其实我收到的数据通过应用程序显示出来是正确的,也就是说,收到的数据并没有错,只是我现在想在驱动里将数据显示出来,但是直接用DbgPrint()函数显示“Irp->MdlAddress”里的数据却是错误的,不知道原因何在?
天才来自勤奋 知识要靠学习 [url= http://ndxz.126.com]――欢迎来我家做客――[/url]
pengenwen
禁止发言
禁止发言
  • 注册日期2003-03-07
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1586分
  • 威望8380点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-01-08 08:57
用户被禁言,该主题自动屏蔽!
acidfish
驱动小牛
驱动小牛
  • 注册日期2002-05-20
  • 最后登录2009-11-11
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-06-24 09:57
呵呵,俺目前也碰到这个问题了。搂主找到解决方法了吗?
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-06-24 13:22
直接用Irp-MdlAddress显示出来的应该是地址吧,可以使用BufferIO方式,如果一定要用MDL方式,请参考Walter oney的Program the Microsoft driver model
游客

返回顶部