阅读:2258回复:11
Irp->MdlAddress缓冲里的数据用DbgPrint怎么显示出来?
在我的usb设备驱动程序里,我想在每次urb完成时将收到的数据通过DbgPrint()函数显示出来,由于我的IO读写方式为直接IO方式,所以读写例程里用到了Irp->MdlAddress成员,也就是说,完成例程里收到的数据应该是在缓冲Irp->MdlAddress中的,如果我直接用DbgPrint来显示Irp->MdlAddress里的数据,结果是错误的,如果我用MmGetSystemAddressForMdl(Irp->MdlAddress)来获取它的虚拟地址,然后再用DbgPrint来显示这个虚拟地址里的数据就会出现蓝屏错误,我先后依次用MmGetMdlVirtualAddress()、MmGetSystemAddressForMdlSafe()来代替MmGetSystemAddressForMdl()也同样出现了蓝屏错误
请问:我要怎样做才可以显示Irp->MdlAddress缓冲中的数据呢? |
|
|
沙发#
发布于:2003-12-27 21:59
10分太少,不回答~
|
|
|
板凳#
发布于:2003-12-28 12:58
10分太少,不回答~ 分数不是问题,大家相互学习嘛,你要多少分,只要我有我不会吝啬的。请回答――先―― |
|
|
地板#
发布于:2003-12-28 18:20
呵呵,你为什么非要在驱动里显示数据呢?
把数据传到应用程序里再显示不是更好吗? |
|
地下室#
发布于:2003-12-29 12:26
呵呵,你为什么非要在驱动里显示数据呢? 因为我的程序现在有问题了,不知道是驱动收数据的时候就错了,还是在应用层错了,所以希望能在驱动里将收到的数据显示出来。 |
|
|
5楼#
发布于:2003-12-31 21:42
那在应用程序里怎么显示啊???
有教材的话给我发 hewh2003@hotmail.com 谢谢你的热情 |
|
|
6楼#
发布于:2004-01-01 13:02
[quote]呵呵,你为什么非要在驱动里显示数据呢? 因为我的程序现在有问题了,不知道是驱动收数据的时候就错了,还是在应用层错了,所以希望能在驱动里将收到的数据显示出来。 [/quote] 如果你驱动收到的是错误的数据,那么你的应用层就得不到数据了! 因此问题很可能出在设备方与驱动的交互上。 |
|
7楼#
发布于:2004-01-01 13:03
那在应用程序里怎么显示啊??? 数据收到应用程序里的buffer里,那不是想怎么显示就怎么显示吗?可以参考cy的控制面板的源程序ezmr。 |
|
8楼#
发布于:2004-01-08 08:51
我忘了申明一点了,其实我收到的数据通过应用程序显示出来是正确的,也就是说,收到的数据并没有错,只是我现在想在驱动里将数据显示出来,但是直接用DbgPrint()函数显示“Irp->MdlAddress”里的数据却是错误的,不知道原因何在?
|
|
|
9楼#
发布于:2004-01-08 08:57
用户被禁言,该主题自动屏蔽! |
|
10楼#
发布于:2004-06-24 09:57
呵呵,俺目前也碰到这个问题了。搂主找到解决方法了吗?
|
|
11楼#
发布于:2004-06-24 13:22
直接用Irp-MdlAddress显示出来的应该是地址吧,可以使用BufferIO方式,如果一定要用MDL方式,请参考Walter oney的Program the Microsoft driver model
|
|