Always!978
驱动小牛
驱动小牛
  • 注册日期2002-05-09
  • 最后登录2005-04-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1706回复:13

主机USB驱动与应用程序的共享缓冲区问题

楼主#
更多 发布于:2003-04-11 11:08
  以前做VxD驱动的时候,可以在VxD驱动中创建一个缓冲区,然后把缓冲区头指针送给应用程序,应用程序和驱动程序共享此缓冲区。但是在Wdm中发现此种方法好像行不通。我在wdm中创建一个缓冲区并将头指针送给应用程序后,应用程序能得到此指针,但是无法读写这块内存。我是用new非分页内存的方式开辟的缓冲区,是不是开辟方法有问题呢?各位高人在应用程序和驱动程序之间交换数据的时候都是deviceiocontrol而不用共享缓冲区么?
Tomorrow Never Die
kilroy_guo
驱动大牛
驱动大牛
  • 注册日期2002-10-29
  • 最后登录2005-11-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-04-16 14:20
我在abc初学者论坛有请教过,里面有给出部分代码,请去参考
二姑家的猫想......
hegaee
驱动牛犊
驱动牛犊
  • 注册日期2003-03-19
  • 最后登录2003-05-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-05-04 14:36
abc初学者论坛是哪里的?
告诉我,交个朋友。
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-05-04 16:41
就在本论坛,再往上一级目录,你就可以在列表中看到
Always!978
驱动小牛
驱动小牛
  • 注册日期2002-05-09
  • 最后登录2005-04-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-05-21 11:06
我在abc初学者论坛有请教过,里面有给出部分代码,请去参考
非常感谢,我刚刚回来,分马上给你补上
Tomorrow Never Die
kilroy_guo
驱动大牛
驱动大牛
  • 注册日期2002-10-29
  • 最后登录2005-11-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-05-21 11:25
 :D :D :D

收到
二姑家的猫想......
kilroy_guo
驱动大牛
驱动大牛
  • 注册日期2002-10-29
  • 最后登录2005-11-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-05-21 11:29
 :mad: :mad: :mad:

这么久了,利息呢?
二姑家的猫想......
Always!978
驱动小牛
驱动小牛
  • 注册日期2002-05-09
  • 最后登录2005-04-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-05-21 13:38
 下次给你双倍!
Tomorrow Never Die
Always!978
驱动小牛
驱动小牛
  • 注册日期2002-05-09
  • 最后登录2005-04-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-05-26 11:12
  kilroy_guo,还有个问题问你:现在设备方发送给我主机方的速度是每隔1ms发送6字节长度的帧,我接收的方法是在驱动程序中启动线程接收,即循环的BuildBulkTransfer,现在的问题有两个,一个是丢帧,每次都丢10帧左右不等,第二个问题是我BuildBulkTransfer函数中将参数bShortOk设置为FALSE,即读到我需要的长度才退出,但是每次都是只读到一帧,也就是6个字节就退出了,我提交的长度是64啊。
  我弄不清是我的问题还是设备方的问题,kilroy_guo帮帮我,给你100分!
Tomorrow Never Die
kilroy_guo
驱动大牛
驱动大牛
  • 注册日期2002-10-29
  • 最后登录2005-11-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-05-26 13:42
 :o :(
关于第一个问题:“每次都丢10帧左右不等”
是不是因为,你的设备方开始不断的送数据和你的主机方开始接收数据,中间有个时间差,这之间设备方缓冲区满了,设备方还在跑,缓冲区写不进去,这时候你的主机方开始读,这时候设备方才写进去,这个造成每次开始接受的时候有一段数据连接不上。
第二个问题:我没有用到bulk,我一直在用iso在usb1.1下面,所以我也不清楚。
二姑家的猫想......
Always!978
驱动小牛
驱动小牛
  • 注册日期2002-05-09
  • 最后登录2005-04-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-05-26 14:55
:o :(
关于第一个问题:“每次都丢10帧左右不等”
是不是因为,你的设备方开始不断的送数据和你的主机方开始接收数据,中间有个时间差,这之间设备方缓冲区满了,设备方还在跑,缓冲区写不进去,这时候你的主机方开始读,这时候设备方才写进去,这个造成每次开始接受的时候有一段数据连接不上。
第二个问题:我没有用到bulk,我一直在用iso在usb1.1下面,所以我也不清楚。

  忘了说了,我是先发出读请求,然后设备方才开始发送数据过来的
。我用的方式是submiturb,如果没有读到数据,这个函数不会返回吧,然后我就等待设备方发送数据过来。还有,iso是中断传输方式么?你也是启动线程来读取数据的么?
Tomorrow Never Die
kilroy_guo
驱动大牛
驱动大牛
  • 注册日期2002-10-29
  • 最后登录2005-11-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-05-26 15:51
你说的是IOCTL_INTERNAL_USB_SUBMIT_URB么?
我用两个内部的urb包不断的pingpong 微软的usbd.sys,有时候我抓快了,它返回是空包,因为我设的是USBD_SHORT_TRANSFER_OK,所以允许有比最大包字节小的包返回。你说的递交urb函数是ds里面的吧,我没用过ds函数,所以不清楚。iso是等时传输,我是在app启动线程读偏移量。

惭愧!惭愧! :( :(
二姑家的猫想......
Always!978
驱动小牛
驱动小牛
  • 注册日期2002-05-09
  • 最后登录2005-04-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-05-27 09:56
你说的是IOCTL_INTERNAL_USB_SUBMIT_URB么?
我用两个内部的urb包不断的pingpong 微软的usbd.sys,有时候我抓快了,它返回是空包,因为我设的是USBD_SHORT_TRANSFER_OK,所以允许有比最大包字节小的包返回。你说的递交urb函数是ds里面的吧,我没用过ds函数,所以不清楚。iso是等时传输,我是在app启动线程读偏移量。

惭愧!惭愧! :( :(

不管怎么说,多谢,给你20分先,我怎么最多只能给20分?余下的我开新贴给你,留个QQ吧,email也行,有的问题一次说不清,想和你交流一下,ok?
Tomorrow Never Die
Always!978
驱动小牛
驱动小牛
  • 注册日期2002-05-09
  • 最后登录2005-04-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-05-27 10:10
  出了点小问题,我进到这个帖子没法给分了,我开一个新贴,kilroy_guo来拿。
Tomorrow Never Die
游客

返回顶部