ic2001wsd
驱动牛犊
驱动牛犊
  • 注册日期2002-03-30
  • 最后登录2002-12-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2189回复:5

请问开发鼠标驱动程序

楼主#
更多 发布于:2002-03-30 15:38
请问:我现在想在WIN2000下开发鼠标驱动程序,鼠标的协议采用标准协议,但是有个别自己添加的功能,请问我在设计驱动程序的时候应该如何去做?????
是不是要去重新开发驱动程序,还是在标准系统上做一个驱动功能添加程序???

请哪位高手能给我一个思路,谢谢
驱动小虫
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-03-30 17:15
    你的情况应该是典型的过滤驱动程序实现的功能。
    可以根据你的实际需要来决定是开发一个UpperFilter Driver还是开发一个LowerFilter驱动。不过,还是开发Upper Filter Driver的机会多一些。
Tom_lyd
ic2001wsd
驱动牛犊
驱动牛犊
  • 注册日期2002-03-30
  • 最后登录2002-12-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-03-30 20:16
谢谢你的回答,可是我觉得这个程序不是简单地过滤的问题,而是要在系统的标准驱动程序的基础上添加一些功能,当然我是自己想的,请指教!

同时请问哪儿能有例程,我可以看看的,谢谢,谢谢!

对了,我不知道这个对于我一个新手来说工作量大吗??
谢谢回答!
驱动小虫
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-03-30 21:55
    当然,你首先得知道几乎所有关于鼠标驱程序的细节,在标准鼠标驱动程序中需要处理的东西。
    我不知道你需要增加什么功能,因为有的功能可能是没有必要通过驱动程序去实现的,取而代之,你可以在应用程序层用HOOK(钩子)截获鼠标消息,进而达到一些增强鼠标驱动程序的功能。
    对于你如何过滤鼠标驱动程序,我的大体思路如下(我并有做过类似的鼠标驱动程序,只是我的设想):
    这样的驱动程序应该是系统启动时自动启动的,因此它的DriverEntry例程里应该有一些额外的工作,典型的,需要注册一个重新初始化例程(IoRegisterBootDriverReinitialization),因为系统初始化时,可能有一些鼠标驱动程序赖以启动的服务还没有启动。这个例程的具体用法请参见DDK。
     另外, 既然驱动程序系统启动时就自动加载,你的过滤驱动程序应该不需要应用程序的支持。这样,你应该只要建立一个过滤设备对象就可以,然后通过ZwCreateFile在内核得到系统鼠标驱动程序的设备对象句柄,再用ObReferenceObjectByPointer将句柄转为指针,然后调用IoGetRelatedObjects例程得到可能已经挂接到这个鼠标设备对象上的过滤设备对象,并在调用IoCreateDevice创建自己的设备对象后,将自己的设备对象挂接在这个设备对象的上方(IoAttachDeviceToDeviceStack).有一点要注意:ZwCreateFile及以后的几个例程需要一个数据结构叫做OBJECT_ATTRIBUTES,在调用ZwCreateFile之前还要调用IoInitializeObjectAttributes例程初始化一个对象属性结构,这里面有关于目标设备对象名的UNICODE描述。
    这是一般的过滤驱动程序的创建步骤,但我不能确定它一定能适用于鼠标的过滤驱动。但愿对你有帮助!


best regards !
    
Tom_lyd
ic2001wsd
驱动牛犊
驱动牛犊
  • 注册日期2002-03-30
  • 最后登录2002-12-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-04-01 08:06
谢谢搂上的兄弟,本来想把还有的10也送给你您,可惜我找不到给分的按钮了,小弟第一次发问,就得到帮助,非常感谢


不知道还有那位朋友能继续说说各自的思路
驱动小虫
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-04-01 08:35
哈哈,又有分?我喜欢!
你可以再发一个新贴子,然后我回你的贴子去领分!


哈。。。。。。。。。。。
Tom_lyd
游客

返回顶部