阅读:3100回复:4
Windows98下两种模式驱动程序的相互访问
我在我的Windows98系统下安装了HID Mouse,并了解它使用了那些驱动程序,发现它使用了mouhid.vxd。我写过类鼠标的触摸屏驱动程序,知道在Windows9x下涉及鼠标处理的部件有mouse minidriver,
VMOUSE,Mouse.drv以及Windows USER模块。我使用过VMOUSE提供的服务来传递产生的触摸事件(转换为鼠标事件),另外也采用直接回调Windows 16位USER模块的方法。让我感到疑惑的是,我的驱动希望同时在98和2000下运行。对于2000,我建立一个MAPPER driver,将来自触摸屏的HID Report转换给Mouse class driver(mouclass.sys),这比较容易。对98我就感到为难,①如何写一个WDM驱动(98,2000都可以运行),这个驱动可以使用VMOUSE提供的服务或直接回调Windows 16位USER模块。②有没有别的路径? 请给予提示!! |
|
最新喜欢:flyaji |
沙发#
发布于:2001-05-17 11:02
这是vxd和wdm的互相作用。站上有一篇文章。
|
|
|
板凳#
发布于:2001-05-17 12:18
我在站上找了一下,发现《从VXD中调用WDM服务》这篇文章。但我觉得它不适合我的情况。由于VxD不可在2000下运行,故我会写WDM驱动程序并期望它在98和2000下良好的工作。但基于98下的鼠标事件由内核向SHELL的传递路径,我要从WDM驱动中调用VMOUSE服务或直接回调Windows USER模块mouse_event函数。当然也许根本没有那么复杂,有别的路径?目的是一个:将模拟鼠标事件传给Windows。
在《Windows WDM设备驱动程序开发指南》195页提到“NT驱动程序可以使用其他技术与硬件对话,它可以使自己与另一个驱动程序相连,并以这种方式与硬件打交道。另外,它可以使用可用的VxD与硬件打交道。”所以,讨论一下这个问题还是有用的。 |
|
地板#
发布于:2001-05-17 17:00
98下可以写一个HidMinidriver将你所得到的触摸数据转换为Mouse数据即可。
|
|
|
地下室#
发布于:2001-05-18 13:08
通过对2000的输入架构进行分析,我认为:
①HID minidriver对hidclass负责,不触动hidclass以上的部分,我们就可以完成我们的工作。如果硬件是传统的硬件的话,可以写一个 HID minidriver使其表现得象一个HID设备一样,实现系统输入架构 的一致。 ②对于符合HID规范的设备,采用HID客户驱动程序已经可以获得设备的输入情况(当然,2000下的HID键盘和鼠标驱动程序打开一个HID键盘或鼠标独占访问),但我们应该可以在Hidclass为我们的设备建立的PDO与Mouhid之间增加一个透明的Filter驱动程序。这个应该是推荐的办法,且应该可以在98和2000中通用。 ③随便改写系统部件,我不推荐。这样容易惹麻烦。 ④对于98下Mouhid.VxD的运作机理,我仍然十分感兴趣,希望大家提供意见。 |
|