acidfish
驱动小牛
驱动小牛
  • 注册日期2002-05-20
  • 最后登录2009-11-11
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
20楼#
发布于:2004-02-11 15:23
第一个问题,正如你所说的,可以采用定时器或者另外开一个系统线程从USB设备上读取。
第二个和第三个问题,属于USB client driver如何向USBD层读写数据的范围。可以参考一下ddk的bulk, iso等例子。一般来说usb client driver生成irp发送到下层,这个方法都比较固定。那些例子里边都有很多演示的用法。
dennis761222
驱动牛犊
驱动牛犊
  • 注册日期2003-12-12
  • 最后登录2006-03-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
21楼#
发布于:2004-02-11 16:42
可能我刚才没说清楚。

我现在的问题:
  在 应用程序 没有产生IRP_MJ_READ的 请求包的情况下,怎样生成IRP_MJ_READ请求包? 所以我问了 这两个问题
   2)若用IoAllocateIrp() 创建一个Irp, MDL 应如何创建?
    3)该Irp的参数应如何填充?
  而usb sample中说的都是在 有应用程序没有产生IRP_MJ_READ的情况下,接管该IRP. 这个好做。


请牛人指教!! 谢谢。。
acidfish
驱动小牛
驱动小牛
  • 注册日期2002-05-20
  • 最后登录2009-11-11
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
22楼#
发布于:2004-02-11 16:59
你的意思是不是:
在 应用程序 没有产生IRP_MJ_READ的 请求包的情况下,如何向底层的驱动发送IRP_MJ_READ请求吗?
如果是这样的话,就在定时器里边向下层发送读取数据的命令。
可能我还没有理解你的意思。:(
dennis761222
驱动牛犊
驱动牛犊
  • 注册日期2003-12-12
  • 最后登录2006-03-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
23楼#
发布于:2004-02-11 17:21
是这个意思。

在定时器处理routine 中 , 我就不知道 怎样生成和配置这个read 请求包。 你能给我个例子看看。 因为在该Irp中涉及到mdl 的访问的问题, 你帮我分析分析 。。。

  解决这个问题,我想这个driver 就能工作了 。

非常谢谢!!!
acidfish
驱动小牛
驱动小牛
  • 注册日期2002-05-20
  • 最后登录2009-11-11
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
24楼#
发布于:2004-02-11 17:43
生成一个新的Irp有好几个函数可以做到。有的不需要mdl。我以前做的一个usb client driver的项目好像没有怎么处理mdl的问题。当使用的一个函数生成irp,好像没有对mdl进行处理。现在记不清当时用的什么irp生成函数了。
目前手头上没有那个程序了。你不妨换一个函数试试看。
Hover
驱动牛犊
驱动牛犊
  • 注册日期2003-02-04
  • 最后登录2004-11-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
25楼#
发布于:2004-02-17 16:26
楼主,有幸得你的例子使我完成了一个虚拟串口驱动程序,不过还是有两个问题没有解决:

1。安装驱动后在设备管理器中会显示VirtualSerial,但重新启动后这个图标不见了,运行enum -p 1只是说明我的设备已安装成功, test.exe却提示没有虚拟设备。测试了你的程序也是这样,怎样使我重新启动后在设备管理器中仍会显示VirtualSerial呢,是要改inf文件还是driver代码呢? 怎么改?

2。如果装N次busenum.sys,那么在设备管理器中的系统设备中会有N个Toaster Bus Enumerator DeviceDesc,怎样使我装N次busenum.sys仅只显示一个Toaster Bus Enumerator DeviceDesc呢?
Hover
驱动牛犊
驱动牛犊
  • 注册日期2003-02-04
  • 最后登录2004-11-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
26楼#
发布于:2004-02-17 16:32
楼主,有幸得你的例子使我完成了一个虚拟串口驱动程序,不过还是有两个问题没有解决:

1。安装驱动后在设备管理器中会显示VirtualSerial,但重新启动后这个图标不见了,运行enum -p 1只是说我的设备已安装成功, test.exe却提示没有虚拟设备。测试了你的程序也是这样,怎样使我重新启动后在设备管理器中仍会显示VirtualSerial呢,是要改inf文件还是driver代码呢? 怎么改?

2。如果装N次busenum.sys,那么在设备管理器中的系统设备中会有N个Toaster Bus Enumerator DeviceDesc,怎样使我装N次busenum.sys仅只显示一个Toaster Bus Enumerator DeviceDesc呢?
acidfish
驱动小牛
驱动小牛
  • 注册日期2002-05-20
  • 最后登录2009-11-11
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
27楼#
发布于:2004-02-17 16:55
1.之所以这样动态生成虚拟设备完全是原来代码toaster的基础上开发的结果。这样比较方便调试。就像usb设备一样可以热插拔设备。当然完全可以改成toaster bus driver一启动就枚举出虚拟设备。改动的方法,我目前能够想到的有两个:
1、写一个win32程序或者是cpl程序(就是在控制面班上的程序)系统一启动就自动向toaster bus driver发送生成新设备的命令
2、改动toaster bus driver。使得它start device以后就枚举出一定数量的新设备。
两种方法各有千秋。
2.这个现象是正常的。就像你的电脑里边安装N个网卡就会有N个图标一样。如果没有相应的图标反而不正常了。
Hover
驱动牛犊
驱动牛犊
  • 注册日期2003-02-04
  • 最后登录2004-11-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
28楼#
发布于:2004-02-18 09:07
多谢楼主回复!!!
zh01
驱动牛犊
驱动牛犊
  • 注册日期2001-07-10
  • 最后登录2008-04-24
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
29楼#
发布于:2004-02-18 10:28
Thank you!
anshen
驱动牛犊
驱动牛犊
  • 注册日期2003-11-05
  • 最后登录2005-05-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
30楼#
发布于:2004-02-19 22:48
请问楼主能不能把你的虚拟串口程序发给我,先谢了!
lwc@an-sen.com
KMK
KMK
驱动大牛
驱动大牛
  • 注册日期2001-09-12
  • 最后登录2017-10-06
  • 粉丝2
  • 关注0
  • 积分42分
  • 威望404点
  • 贡献值2点
  • 好评度58点
  • 原创分1分
  • 专家分1分
  • 社区居民
31楼#
发布于:2004-02-20 02:52
不是已经提供下载吗 ??
Hover
驱动牛犊
驱动牛犊
  • 注册日期2003-02-04
  • 最后登录2004-11-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
32楼#
发布于:2004-02-21 08:02
楼主,问你一个比较菜鸟性的问题,但对于刚入门的人是很重要的,请楼主回答:
  
  你这个程序中有个Debuglog文件夹,里面记载的是调试信息的TXT文件,比如“toaster_bus分析2003_12_11.txt"等等,请问,这些信息是怎样从驱动中写入这些txt文件中的,是用softice?, 那具体的要怎样做呢?

谢谢!!!
KMK
KMK
驱动大牛
驱动大牛
  • 注册日期2001-09-12
  • 最后登录2017-10-06
  • 粉丝2
  • 关注0
  • 积分42分
  • 威望404点
  • 贡献值2点
  • 好评度58点
  • 原创分1分
  • 专家分1分
  • 社区居民
33楼#
发布于:2004-02-21 08:27
用这个就可以啦 !!

http://www.sysinternals.com/files/dbgvnt.zip
Hover
驱动牛犊
驱动牛犊
  • 注册日期2003-02-04
  • 最后登录2004-11-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
34楼#
发布于:2004-02-21 08:47
谢谢KMK,

不过还想问楼主的是:
  楼主是否也是用dbgView?
acidfish
驱动小牛
驱动小牛
  • 注册日期2002-05-20
  • 最后登录2009-11-11
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
35楼#
发布于:2004-02-21 09:30
用的是softice
启动soiftice symbol loader
file->Save SoftIce history as..
就可以把softice的屏幕信息保存到文件中。
anshen
驱动牛犊
驱动牛犊
  • 注册日期2003-11-05
  • 最后登录2005-05-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
36楼#
发布于:2004-02-22 12:55
首先谢谢楼主提供代码。
请问编译环境是什么?我用win xp DDK,不能编译,请多赐教!
另外,enum -p 1在windows me下不起作用,怎么解决?
多谢!

新手上路,多多关照
acidfish
驱动小牛
驱动小牛
  • 注册日期2002-05-20
  • 最后登录2009-11-11
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
37楼#
发布于:2004-02-23 09:28
我没有用过xpddk编译过。应该问题不大吧?可能一些小地方需要修改。
我开发和测试用的平台是windows 2000 sp4
win2000 ddk
vc 6.0
anshen
驱动牛犊
驱动牛犊
  • 注册日期2003-11-05
  • 最后登录2005-05-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
38楼#
发布于:2004-02-24 23:47
多谢楼主回复
wuyanfeng
驱动小牛
驱动小牛
  • 注册日期2003-08-26
  • 最后登录2011-05-06
  • 粉丝0
  • 关注0
  • 积分1002分
  • 威望127点
  • 贡献值0点
  • 好评度103点
  • 原创分0分
  • 专家分0分
39楼#
发布于:2004-02-27 22:07
我没有用过xpddk编译过。应该问题不大吧?可能一些小地方需要修改。
我开发和测试用的平台是windows 2000 sp4
win2000 ddk
vc 6.0

我看了你的东东,很好!
我也写里一个驱动程序!这个驱动是一个游戏程序!但只能在 windows xp 或者 windows xp sp1 上跑。你可以到 http://link.coolala.net/temp/game.rar   该游戏是热键激活的。
(ctrl + f12) (Esc 键退出)(图形界面)
我建议这位老兄最好用 c++ 写驱动。这样可以管理大的代码。
你应该用个版本管理软件。 例如 CVS  Sourcesafe 等。

只说不练假把势。
只练不说傻把势。
又说又练真把势。
游客

返回顶部