4438|15

78

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

触摸品伪驱动的开发 [复制链接]

我需要实现全屏手写的功能,目前为止得到的方法就是要自己写一个触摸屏的驱动,因为系统本身就有一个touch.dll,所以我其实只是做了一个包装,把touch.dll的函数用GetProcAddress得到后在调用,只是修改了TouchPanelEnable函数,可是编译出来的dll却不能被gwes加载,我已经在注册表中把HARDWARE\DEVICEMAP\TOUCH里面的DriverName改好了,发现重启后gwes进程没有加载我的驱动,不知道是什么原因呢?我用的是visual studio 2008开发的dll

我现在是这样做的,先生成这个驱动mytouch.dll,放到\windows目录下面,用远程注册表编辑器修改
HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH
"DriverName"="mytouch.dll"
重启
发现触摸屏没反应,用远程进程查看器发现gwes进程里面没有加载我的mytouch.dll
现在不知道是什么原因,是不是这个dll有什么和普通不一样的地方?

我现在的dll导出的函数有:
TouchPanelGetDeviceCaps
TouchPanelEnable
TouchPanelDisable
TouchPanelSetMode
TouchPanelReadCalibrationPoint
TouchPanelReadCalibrationAbort
TouchPanelSetCalibration
TouchPanelCalibrateAPoint
TouchPanelPowerHandler
TouchReset
TouchRegisterWindow
TouchUnregisterWindow
TouchSetValue
TouchGetValue
TouchCreateEvent
TouchGetFocusWnd
TouchGetLastTouchFocusWnd
TouchGetQueuePtr
不知道是不是有什么问题,我是根据原来的touch.dll里面的函数进行导出的

最新回复

也发现驱动没有被加载,在进程的模块中找不到,没覆盖前是有的  详情 回复 发表于 2009-4-11 13:25
点赞 关注

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
重启
windows中的东西就没了
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
不会的,我确定重启后这些东西都还在,我用远程注册表编辑器和远程文件查看器都看过了,重启不影响
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

4
 
重起后还在
那你是把跟内核做到一起了?

我的触摸屏可以全屏手写

推荐你用汉王的MALANHUA手写软件
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

5
 
我是需要自己开发全屏手写……
现在就是自己写的dll不能被gwes调用,不知道为什么
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

6
 
检查注册表,如果你能确定没有被调用的话,那唯一的可能就是你的注册表项有问题,否则不会不调用。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

7
 
mark
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

8
 
注册表应该没有问题,我现在有两个dll,一个是我自己写的,另一个是从别的地方拿来的,我先把自己的mytouch.dll放在windows目录下面,修改注册表
HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH
"DriverName"="mytouch.dll"
重新启动WM,用远程进程查看器发现gwes.exe没有加载我的mytouch.dll
然后我把另一个dll重命名为mytouch.dll,替换我自己那个,再重新启动,这次发现gwes.exe进程空间里面加载了mytouch.dll
这样应该就可以确定注册表设置是正确的
我故意在我自己的dll里面的DllMain增加了一个写入文件的函数,一旦调用就会生成一个文件,可是我发现并没有生成这个文件,不知道这样是不是就可以确定gwes.exe没有加载我的dll,因为我自己写的exe调用这个dll是可以生成文件的。
引用 5 楼 yashi 的回复:
检查注册表,如果你能确定没有被调用的话,那唯一的可能就是你的注册表项有问题,否则不会不调用。
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

9
 
在你的DLL的ATTACH那里加点信息就知道你的驱动有没有被加载了
看情况你的注册表应该是没有什么问题,那有没有可能是你的DLL输出的函数有问题?我也是猜的
 
 
 

回复

38

帖子

0

TA的资源

一粒金砂(初级)

10
 
你并没有充分的理由证明你的驱动没有被加载。
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

11
 
那么怎么证明呢?我让dll调用时,在dllmain里面生成一个文件,但是这个文件并没有生成,这不能说明没有加载吗?
我自己写的exe来调用这个dll是可以生成这个文件的
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

12
 
引用 7 楼 Dorice 的回复:
注册表应该没有问题,我现在有两个dll,一个是我自己写的,另一个是从别的地方拿来的,我先把自己的mytouch.dll放在windows目录下面,修改注册表
HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH
"DriverName"="mytouch.dll"
重新启动WM,用远程进程查看器发现gwes.exe没有加载我的mytouch.dll
然后我把另一个dll重命名为mytouch.dll,替换我自己那个,再重新启动,这次发现gwes.exe进程空间里面加载了mytouch.dll
这样应…

很明显呀,说明你写的dll有问题,无法被gwes.exe识别及加载。
至于什么问题就难说了,没有更多信息,不好判断。
 
 
 

回复

51

帖子

0

TA的资源

一粒金砂(初级)

13
 
所以我问究竟gwes加载的dll和一般的dll有什么不一样吗?我这个就是普通的dll,只要加载了,就会生成一个文件,而且我自己写的exe是可以加载这个dll的,现在启动的时候文件没有生成,说明gwes根本就没有加载,或者加载失败?普通dll不能加载吗?就算不符合驱动的接口,但是至少DllMain函数会被调用吧?
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

14
 
我做了个实验,发现,
我把原来的驱动(存在于ROM),从刷机的ROM中考出来,然后覆盖WINDOWS\下的驱动文件,发现触摸屏就不能用了,
难道只有ROM中的驱动能用?
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

15
 
引用 13 楼 vbvc6 的回复:
我做了个实验,发现,
我把原来的驱动(存在于ROM),从刷机的ROM中考出来,然后覆盖WINDOWS\下的驱动文件,发现触摸屏就不能用了,
难道只有ROM中的驱动能用?


有些驱动是这样的。比如PowerButton驱动用新驱动代替windows目录下的老驱动后就不行了,我也不知道怎么回事,其他驱动都可以的。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

16
 
也发现驱动没有被加载,在进程的模块中找不到,没覆盖前是有的
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表