阅读:2808回复:12
键盘的设备名是什么?如何获得驱动程序的设备名?
用CreateFile打开一个设备时,不知道设备名是什么?
|
|
沙发#
发布于:2002-07-31 14:47
如果是系统提供的驱动程序,可以用如下设备名:
\\\\\\\\.\\\\KeyboardClass |
|
|
板凳#
发布于:2002-07-31 15:11
可是我试过了,为什么总是不行呢?
CreateFile(\"\\\\\\\\.\\\\KeyboardClass\",GENERIC_READ|ENERIC_WRITE,FILE_SHARE_READ, NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); 上面的结果总是返回:INVALID_HANDLE_VALUE [编辑 - 7/31/02 by oyxd] |
|
地板#
发布于:2002-07-31 17:30
应该是KeyboardClass0
|
|
|
地下室#
发布于:2002-07-31 19:46
还是不行,怎么回事?
肯定是系统提供的驱动 |
|
5楼#
发布于:2002-07-31 20:02
但是我在打开其他设备时,例如:com1,lpt1,A:,等等都成功了?
究竟怎么回事???? |
|
6楼#
发布于:2002-08-01 10:53
要不你打开注册表,在
HKLM\\System\\CurrentControlSet\\Service\\KbdClass 中看看有没有确切的设备名称。 |
|
|
7楼#
发布于:2002-08-01 11:55
没找到,还有别的办法能获得键盘的设备名吗?
能不能从它的GUID入手 |
|
8楼#
发布于:2002-08-01 15:02
没找到,还有别的办法能获得键盘的设备名吗? 当然可以,请参照DriverStdio中得例子。 |
|
|
9楼#
发布于:2002-08-01 16:29
键盘设备名是KeyboardClass0,但是它好像没有在DosDevice建立符号链接,所以在应用程序中用CreateFile打不开。
|
|
|
10楼#
发布于:2002-08-01 16:56
我从新写了一个键盘驱动,把IoCreateDevice函数的第三个参数改成了我自己定义的设备名(原来的是NULL),并且建立了DosDevice符号链接。安装上以后,该键盘驱动运行正常,但CreateFile仍然打不开,是不是还要在注册表里添加什么东西,能手工添加吗?
|
|
11楼#
发布于:2002-08-01 17:03
我发现可以用CreateFile以设备名打开的设备在注册表里确实都有这样的键值“\\DosDevice\\***”,例如Com1:“\\DosDevice\\com1”。
那我怎样添加键值才能保证系统找到的是我重写的键盘驱动的设备名? |
|
12楼#
发布于:2002-08-02 09:52
我写的键盘过滤驱动程序,用createfile也打不开,是不是键盘设备本来就打不开呀?不过过滤驱动也完成我的任务了,关注一下。
|
|
|