drank
驱动牛犊
驱动牛犊
  • 注册日期2002-05-21
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3309回复:27

通过GUID,访问驱动. 但createfile总是失败. BLUE大侠 请进

楼主#
更多 发布于:2003-02-19 11:00
我在用DS的kbfilter的例程, 并写了个用户模式的程序想访问kbfilter.
问题在,我用kbfilter的GUID能得到DEVICEPATH, 但无法使用createfile.我的用法如下;
HANDLE hd = CreateFile( ifDetail->DevicePath,// 用GUID得到的设备路径 ACPI#.....{43819946-4910...}
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL);
运行到这儿, 就是ACCESS DINY.

版主,请帮帮忙。 先谢了


[编辑 -  2/26/03 by  drank]
drank
驱动牛犊
驱动牛犊
  • 注册日期2002-05-21
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-02-27 12:53
BLUE大侠, 别扔下句话就不管了。
还请你来关心一下小弟的疾苦啊??
drank
驱动牛犊
驱动牛犊
  • 注册日期2002-05-21
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-02-26 20:19
devicepath 就是设备的符号连接名,前面做的很多工作都是为了得到这个东西.这个东西应该就是用于应用程序访问驱动用的.

这个符号连接名是在驱动的adddevice例程中用ioregisterdeviceinterface注册设备接口时产生的.
drank
驱动牛犊
驱动牛犊
  • 注册日期2002-05-21
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-02-26 20:18
devicepath 就是设备的符号连接名
在驱动的adddevice例程中用ioregisterdeviceinterface注册设备接口是产生的这个符号连接名.
这个东西应该就是用于应用程序访问驱动用的.
mingyulantian
驱动牛犊
驱动牛犊
  • 注册日期2002-11-26
  • 最后登录2006-01-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-02-26 16:47
你在printf(\"Symbolic link is %s\\n\",ifDetail->DevicePath);
这里得到的是什么东东
drank
驱动牛犊
驱动牛犊
  • 注册日期2002-05-21
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-02-26 15:00
在98下真能写出WDM的键盘过滤驱动吗???
找不到任何线索....

Ice@P
驱动牛犊
驱动牛犊
  • 注册日期2002-12-09
  • 最后登录2003-10-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-02-26 09:14
在ddk下面如何通过guid来访问驱动啊?
认认真真过一生
drank
驱动牛犊
驱动牛犊
  • 注册日期2002-05-21
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-02-25 23:27
to: tjm
  你转的帖子的(2),说得是因为类驱动不会往下传递用户自定义的IOCTL所以,工作在下层的filter驱动会收不到IOCTL.... 如过我的理解正确的话
  可,我现在要做的确kbfilter是工作在整个设备堆栈的最上层,所以不会有这样的问题.

  我是不太明白,有参考书说, 2000下键盘和鼠标是系统独享的.那是不是意味着,我从用户端根本无法再创建一个文件对象去访问这类的驱动呢????
tjm
tjm
驱动小牛
驱动小牛
  • 注册日期2002-05-18
  • 最后登录2004-10-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-02-25 14:06
楼主:
我转贴的帖子上已经说了(看2),如果事HID的FILTER,那么从用户态发IOCTL注定失败。
drank
驱动牛犊
驱动牛犊
  • 注册日期2002-05-21
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-02-25 13:59
kbfilter不能在98下使用, 且我不知到如何能在应用程序中与kbfilter通信.
yuri69
驱动小牛
驱动小牛
  • 注册日期2002-07-12
  • 最后登录2005-12-31
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-02-25 13:02
你最好别看 ddk 的filter,看看driverstudio的例程 kbfilter 吧。

它在里面做了两个device,一个是 filterControlDevice,用来与应用程序通讯。

另一个是keyBortdFilterDevice.用来hook 键盘的。 并且带有测试的应用程序。

位置在 example\\nt\\下面。


我不会停止对你的思念,就像呼吸一样,我不去特意的想,但是,只能屏息,而不可能停止
drank
驱动牛犊
驱动牛犊
  • 注册日期2002-05-21
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-02-25 11:23
to tjm:
  我只是想做一个可以在98和2000中都能使用的控制按键的过滤驱动. 不要把我吓倒了.
  
to all
  与键盘按键数据有关的是哪种 IRP. 我需要从IRP的完成例程还是从中断服务例程去获得按键数据?????

[编辑 -  2/25/03 by  drank]
tjm
tjm
驱动小牛
驱动小牛
  • 注册日期2002-05-18
  • 最后登录2004-10-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-02-24 23:06
楼主如果还不死心,看下面的摘录:

This is an example of a class of problems that lots of people have with
HID devices, to wit:

(1) Very hard to install a filter driver for a collection without
filtering everything in the class, because HIDCLASS essentially
instantiates the collection device object on the fly.

(2) Hard to get custom IOCTLs into such a filter because standard class
drivers routinely fail to pass them down. (That\'s the case you\'re
commenting on.)

(3) Very hard to get custom IOCTLs into a HID minidriver because (a)
HIDCLASS fails IRP_MJ_CREATE for a non-collection device object, and (b)
HIDCLASS fails non-standard IOCTLs without passing them to the
minidriver. The \"approved\" way of dealing with this is to define custom
feature \"reports\", which is pretty easy from the driver side. It\'s a
real pain from the application side, though, because it\'s very hard to
determine which collection you need to open in order to communicate with
your own driver.

Couldn\'t somebody at Microsoft try to solve these problems, or at least
come up with workarounds that us mortals can live with?

--
Walter Oney
drank
驱动牛犊
驱动牛犊
  • 注册日期2002-05-21
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-02-22 21:29
thks,arthurtu
我试一下先
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
14楼#
发布于:2003-02-22 16:42
在你的IOCODE对应的函数或dispatch函数上下个断点,看看为什么会返回错误,是哪条语句。
先用symbol loader加载你的driver的symbol,translate。
softice,ctrl+d,sym看你的driver的sym,bpx在函数上下断点。
drank
驱动牛犊
驱动牛犊
  • 注册日期2002-05-21
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2003-02-22 12:48
si, 我不会用,
还请arthurtu简要介绍一下. 我如何才能跟进去??
跟进去后看什么??
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
16楼#
发布于:2003-02-22 01:17
为什么不用si跟进去看看呢?
drank
驱动牛犊
驱动牛犊
  • 注册日期2002-05-21
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2003-02-21 22:31
getlasterror() 显示的是 access is denied
tjm
tjm
驱动小牛
驱动小牛
  • 注册日期2002-05-18
  • 最后登录2004-10-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2003-02-21 20:33
只能回答一个问题,鼠标键盘的确是独享的。
另外,最后GETLASTERROR显示的是什么?
drank
驱动牛犊
驱动牛犊
  • 注册日期2002-05-21
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2003-02-21 18:55
无人指点吗?
blue大侠, 跑哪儿去了
上一页
游客

返回顶部