阅读:2163回复:14
Toaster Bus
我现在正在做HID鼠标的驱动程序,用Toaster Bus和hidsporb可以用键盘模拟鼠标的移动和点击,现在也可以模拟键盘的一些操作,效果还可以
不过现在有一些问题,我搞不太清楚,我到微软的newsgroup上发了帖,Eliyas Yakub说他忙,没有时间帮我解答问题,给了我这个网址,support.microsoft.com打开以后是中文的,我也找不到有关于驱动开发的论坛,还是到这里来,索性就在这里法帖了,:)希望有高手可以看到,帮我解答问题 1 如果用过Toaster Bus的人都知道每次加载FDO时都要输入enmu -p 1 然后加载我的hidsporb joystick/mouse/keyboard驱动程序,而每次重起的时候必须要输入enum -u 1,否则不可以重起,系统会停滞。 这是怎么回事,我猜想大概是pnp或者是power的问题,但我不敢确认 2 另外还有一个问题就是:当我第一次安装hidsporb驱动时,会有“!”惊叹号在设备管理器里,而且很奇怪,惊叹号会按照顺序一个一个的接着来,(每次重起以后键入enum -p 1) 第一个是Spacetec SpaceOrb 360 第二个是HID-compliant game controller 第三个是HID-compliant mouse 最后一个是HID_compliant keyboard 以后每一次装载后都没有问题,可以方便的调试 按道理安装HID的驱动设备是不需要重新启动的,一次性就可以安装好,另外,一个驱动程序,应该是安装好以后,以后就可以不用重复安装,但是我每次要用到这个驱动的时候,都要安装一次,也就是enum -p 1 是什么出了问题呢?不解,郁闷中...... 最后就是要用这个hidsporb驱动,就一定要建立在Toaster Bus上,单独安装hidsporb安装不成功,总是有惊叹号,我也不知道是哪里出了问题,有没有专家帮我。 希望可以听到回音,谢谢! |
|
最新喜欢:Leopar...
|
沙发#
发布于:2003-02-28 12:03
哦,对了,忘了说了,错误码是10,我也不清楚是什么意思
|
|
|
板凳#
发布于:2003-03-04 09:31
没有人来,我顶一下 :D
|
|
|
地板#
发布于:2003-03-09 02:35
在USB版大概做的人不多吧?反正俺是不懂啦! :D
|
|
|
地下室#
发布于:2003-03-10 10:42
那我这个帖子放错地方了?
:( |
|
|
5楼#
发布于:2003-03-10 16:59
鼠标的话作为PC 的标准设备应该无须写驱动吧, WINDOWS 自带的。
另外问一下,你是KEYBOARD & MOUSE 做在一起的吗? 象键盘的话,只要正确枚举后, HOST 会自动安装驱动的。 |
|
6楼#
发布于:2003-03-14 09:44
鼠标和键盘的驱动都是windows自带的,但都是ps/2的,没有usb的hid设备,我的键盘和鼠标是做在一起的,我把两个设备的描述表都添加了进去,安装后系统会自动安装相应的设备
|
|
|
7楼#
发布于:2003-06-12 14:22
哈哈,我们做的事有点类似。不过,老大,你的问题应该解决了吧?
|
|
|
8楼#
发布于:2003-06-12 16:51
没有!我放弃了,我直接添加硬件设备,并没有在Toaster bus基础上,你呢?
|
|
|
9楼#
发布于:2003-06-13 13:51
:(
不过我的和你的问题不一样,只是说领域接近 :D 我写了一个 HID miniport 的 mouse driver,这个很简单,把hidgame 精简一下就好了。 然后在 pc camera driver 上做了一个 filter driver,现在要让这个 driver 有 bus driver 的功能,从而 enum 一个设备,加载我的mouse driver。(整体上是一个演示性的软光电鼠标) 这个也应该很简单的,和 serenum 类似(但我不是在 serenum 基础上改,而是在 usb\\filter 的基础上做的)。问题是:在响应 query_device_relation之后,没有收到发给 PDO 的请求。你看,我的第一步都没有迈出去 :( http://www.driverdevelop.com/forum/viewthread.php?tid=43886 不知道你说的“直接添加硬件设备”是什么意思,我要是实在不行了也会试试把两个driver合在一起。 |
|
|
10楼#
发布于:2003-06-13 15:43
你说的问题我没有深入下去了,因为我觉得Toaster bus只是一个范例程序,如果一个bus程序要这么简单的话,每个人都可以做驱动了。我觉得她隐藏了很多比较重要,比较核心的东东。bus要比一般的驱动要复杂很多,除了自己的pnp,power,ioctl数据转换等内容,还要解决嫁接到bus上的驱动的pnp,power等东东。
我说的直接添加设备就是不需要bus的支持,直接可以pnp的驱动。我把键盘,鼠标和自定义设备都做到一个驱动程序里了,只要添加一个设备,就可以在设备管理器里看到三个设备,不过他们都是假的,也就是虚拟的,测试用的,很简单,测试键盘控制鼠标的动作 |
|
|
11楼#
发布于:2003-06-15 00:38
虽然你已经结束了这个项目,我还是希望能交流交流,互相启发,增加点经验值,呵呵
又前后看了一下,感觉你做的这个driver就是虚拟出mouse, keyboard以及joystick。(hidsporb我还没看过) 你用Toaster Bus只是为了模拟设备插入,是吧? 而Toaster Bus模拟的插拔也是由一个应用程序来启动的,所以意义也不大。 反正直接改INF就可以手动加载你的driver及设备了,是这样吧? driver安装后要求重启,我也常碰到,但最后的结果通常是driver写得有问题。 你说“可以在设备管理器里看到三个设备”,需要在driver里创建三个设备吗? 的确,bus driver麻烦一点,但我觉得还不至于太麻烦。主要是既有FDO的dispatch,又有它所创建的PDO的dispatch。 本来觉得这些不是很难理解的,但我的情况里它自身又是filter driver,所以不好确定问题出在哪部分。 加之WDM是第一次做,以前只做过NT下的(那时还没有FDO和PDO之类的说法吧),有些概念理解得不透彻 :( 有兴趣就随便说点经验或心得吧。反正我也不会指望你:D,大部分问题最终还是靠自己解决的,不过,有时候一点提示可能就会有很大帮助 :) |
|
|
12楼#
发布于:2003-06-16 10:02
心得倒是没有多少,就是觉得从一开始的
没有概念,问题都不知道如何提――郁闷 ――> 有点概念,问号多多,但是无法解决――郁闷 ――> 着手开始写代码,Bug多多,蓝屏!――郁闷 ――> Debug调试,问题多多――还是郁闷 ――> 最后才会开心,整个过程就是这样 不知道的,就像天书一样, 知道的呢,这么简单的问题你都不懂,看书去! |
|
|
13楼#
发布于:2003-06-17 14:27
哈哈哈哈!
自我安慰吧:钻研也有钻研的乐趣! 看来我也和你一样了,直接把这个设备安装上去。还是修改了一点代码:query_id/HardwareIDs,感觉是非常规做法。 我就当是在这里做笔记了 :D :D [编辑 - 6/17/03 by jason.gao] |
|
|
14楼#
发布于:2003-06-17 15:38
对啊,这种习惯比较好,但也有坏处,我总是找不到我要找的东东
:mad: :mad: :mad: 但每次都能在我的硬盘里找到意想不到的东东 :D :D :D |
|
|