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

求教各位大虾NT/2K下Ctrl+Alt+Del屏蔽的问题。(送分!)

楼主#
更多 发布于:2002-07-26 13:38
我试了很多种常规的办法效果都不是很好,一次看到一篇文章讲到可以用DDK中kbfiltr中的KbFilter_ServiceCallback函数,我将其看了很久,也不知道具体在我的程序中怎么去实现我要的功能(我用VC,对驱动开发比较陌生),各位大虾能否给点提示?如果有可能的话,给点示例性的代码,我在此谢过了!!
james_razor
驱动牛犊
驱动牛犊
  • 注册日期2002-05-17
  • 最后登录2002-08-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-07-26 14:00
重写一个GINA就行了,和驱动没什么关系。
eqinzm
驱动牛犊
驱动牛犊
  • 注册日期2001-10-18
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望20点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2002-07-26 14:55
用gina.dll的方法并不好
因为替换了系统文件
不保险

kbfiltr是可以做到
很简单的
Hi
xdjm
驱动中牛
驱动中牛
  • 注册日期2001-04-02
  • 最后登录2024-01-25
  • 粉丝0
  • 关注0
  • 积分34分
  • 威望25点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2002-07-26 15:20
用gina.dll的方法并不好
因为替换了系统文件
不保险

kbfiltr是可以做到
很简单的

我见过的例子都是通过重写GINA.DLL来实现的,应该没有什么问题,不过我没有试过。 :D :D :D

BTW:MSDN中好象有例子的~~~
cat5
驱动牛犊
驱动牛犊
  • 注册日期2002-07-19
  • 最后登录2002-12-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-07-26 19:26
替换系统的msGina.dll我试过,但是这种办法需要重新启动机器,不能满足开发的需要。请eqinzm大虾给我讲一下如何用Kbfiltr,我用DDK提供的build编译后生成一个Kbfilter.sys我用设备管理器将其加载并且重启,但是我用CreateFile(\"\\\\\\\\.\\\\Kbfiltr\",...)总是得到
INVALID_HANDLE_VALUE,查看了一下错误码,说是系统找不到指定的文件。 看来\"\\\\\\\\.\\\\Kbfiltr\"这样的设备名有问题,请各位给我指点一下,万分感激!!
xdjm
驱动中牛
驱动中牛
  • 注册日期2001-04-02
  • 最后登录2024-01-25
  • 粉丝0
  • 关注0
  • 积分34分
  • 威望25点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2002-07-26 19:35
应该只需要重启一次就可以了。
xdjm
驱动中牛
驱动中牛
  • 注册日期2001-04-02
  • 最后登录2024-01-25
  • 粉丝0
  • 关注0
  • 积分34分
  • 威望25点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2002-07-26 19:38
替换系统的msGina.dll我试过,但是这种办法需要重新启动机器,不能满足开发的需要。请eqinzm大虾给我讲一下如何用Kbfiltr,我用DDK提供的build编译后生成一个Kbfilter.sys我用设备管理器将其加载并且重启,但是我用CreateFile(\"\\\\\\\\.\\\\Kbfiltr\",...)总是得到
INVALID_HANDLE_VALUE,查看了一下错误码,说是系统找不到指定的文件。 看来\"\\\\\\\\.\\\\Kbfiltr\"这样的设备名有问题,请各位给我指点一下,万分感激!!

CreateFile应该指定你在驱动程序中使用IoCreateSymbolicLink时所命名的符号链接的名字。
cat5
驱动牛犊
驱动牛犊
  • 注册日期2002-07-19
  • 最后登录2002-12-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-07-26 19:50
可是我查了一下DDK中的kbfiltr.c中根本就没有用IoCreateSymbolicLink,那么对于这种驱动,我应该用什么设备名呢?
cat5
驱动牛犊
驱动牛犊
  • 注册日期2002-07-19
  • 最后登录2002-12-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-07-26 19:53
是不是要自己加上呢/来命名符号链接?
xdjm
驱动中牛
驱动中牛
  • 注册日期2001-04-02
  • 最后登录2024-01-25
  • 粉丝0
  • 关注0
  • 积分34分
  • 威望25点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2002-07-26 21:24
是不是要自己加上呢/来命名符号链接?

那这是一个过滤器驱动程序,我想它应该使用了IoGetDeviceObjectPointer以及IoAttachDevice等类似的例程吧,你看看从这些例程可不可以找到相关的设备名字~~~
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-07-26 23:12
替换gina.dll好象不能替换掉登陆的热键吧!还是应该从键盘过滤入手吧!哪个驱动程序没有研究过,但是肯定是需要自己进行修改的了,按照你说的,应该在创建一个设备之后还有自己添加一个对应用程序接口的符号连接才可以的,并且createfile打开的不能是设备名称,只能是符号连接
eqinzm
驱动牛犊
驱动牛犊
  • 注册日期2001-10-18
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望20点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
  • 社区居民
11楼#
发布于:2002-07-26 23:44
kbfiltr安装后要重启的
因为是过滤驱动

如果应用程序和驱动通信
在kbfiltr里面要自己创建一个设备,然后创建符号连接
Hi
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-07-27 00:45
作为过滤驱动程序,安装之后不一定需要从起才可以的,需要看是过滤什么样的请求,还有就是在什么层次上面
lyabcd
驱动大牛
驱动大牛
  • 注册日期2001-08-09
  • 最后登录2015-10-01
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-07-27 00:51
何时需要重起何时不需要那,请老鼠明示
datongguandian@sina.com
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-07-27 00:53
这个很难说的全面的,只有自己试过才知道了,并且我作的驱动程序面很窄,还是让各位老大说吧
lyabcd
驱动大牛
驱动大牛
  • 注册日期2001-08-09
  • 最后登录2015-10-01
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-07-27 00:55
说一下你遇到的比较典型的也可
datongguandian@sina.com
lzm
lzm
驱动小牛
驱动小牛
  • 注册日期2001-05-07
  • 最后登录2010-01-05
  • 粉丝0
  • 关注0
  • 积分671分
  • 威望78点
  • 贡献值0点
  • 好评度77点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-07-27 01:32
    

     替换gina.dll好象不能替换掉登陆的热键吧!

对但可以不处理 C-A-D呀,也只要重起1次
cat5
驱动牛犊
驱动牛犊
  • 注册日期2002-07-19
  • 最后登录2002-12-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2002-07-27 14:18
哦,对对,昨天看书上说,设备名只能对内核可见,而符号链接名才对Win32API可见.
我想问各位一个问题,这种键盘过滤驱动安装重启后,对Ctrl+Alt+Del屏蔽我能不能实时控制呢?比如说点一个按钮就可以屏蔽,再点一下又可以取消屏蔽呢?
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2002-07-27 17:50
哦,对对,昨天看书上说,设备名只能对内核可见,而符号链接名才对Win32API可见.
我想问各位一个问题,这种键盘过滤驱动安装重启后,对Ctrl+Alt+Del屏蔽我能不能实时控制呢?比如说点一个按钮就可以屏蔽,再点一下又可以取消屏蔽呢?

当然可以,你需要自己创建一个DeviceObject来与Kbdfilter通信,然后通过DeviceIoContril来控制就可以了,
具体说你需要实现以下几个步骤
1、在驱动创建一个FiDO,
2、创建该FiDO的符号连接,比如KbdFilterDev0
3、定义并处理IRP的控制命令,如让Ctrl+Atl+Del Disable和Enable等。
4、然后安置驱动程序,并重新启动
5、在应用程序中打开该设备,然后使用驱动中定义的Control Code来控制。

顺便说一句,如果你没有开发过Driver,这可能需要参考一些DDK资料,因为有很多实现的细节问题需要处理。
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
cat5
驱动牛犊
驱动牛犊
  • 注册日期2002-07-19
  • 最后登录2002-12-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2002-07-29 15:32
AllenZh大虾能不能告诉我怎么样处理IRP的控制命令让Ctrl+Atl+Del Disable和Enable呢?我实在很陌生,万分感谢!一定给分。
游客

返回顶部