驱动发送消息给应用程序,加载异常!

wdr_001   2009-8-25 10:01 楼主

我的驱动里面用到了RegisterWindowMessage来注册一个消息,目的是用PostMessage把他发送给应用程序,我用了we-hjb的调试助手调试,一切都是正常的,但当我把DLL加到NK是,启动时就出现异常, 如果我把RegisterWindowMessage部分的代码屏蔽掉,驱动可以正常加载!
我想的是:RegisterWindowMessage函数的使用是不是要等GWES加载起来才可以,在device.exe阶段这个函数是不能用的?
--------
一、有没有什么别的方法可以在驱动中发送消息给应用程序?让驱动可以再开始就可以正常加载!
二、要用RegCreateKeyEx、RegSetValueEx、等函数在系统跑起来把驱动的注册表的信息加进去,然后用ActivateDeviceEx加载! 问题是:  这样的话,在重启的时候我还要删除这些注册表信息?


我现在在做第二种! 看哪位有更好的方法?

回复评论 (6)

>> 我想的是:RegisterWindowMessage函数的使用是不是要等GWES加载起来才可以,在device.exe阶段这个函数是不能用的?
这个我不确定,但是我想更加安全的做法是在使用RegisterWindowMessage之前调用isapiready检查一下是否可以用
>> 有没有什么别的方法可以在驱动中发送消息给应用程序?让驱动可以再开始就可以正常加载
最简单的方法就是setevent,当然了驱动和ap里面的event创建的时候名字必须一致
>>  要用RegCreateKeyEx、RegSetValueEx、等函数在系统跑起来把驱动的注册表的信息加进去,然后用ActivateDeviceEx加载! 问题是:  这样的话,在重启的时候我还要删除这些注册表信息?
搞个hive-registry就ok了
点赞  2009-8-25 10:08
引用: 引用 1 楼 guopeixin 的回复:
>>? 要用RegCreateKeyEx、RegSetValueEx、等函数在系统跑起来把驱动的注册表的信息加进去,然后用ActivateDeviceEx加载! 问题是:? 这样的话,在重启的时候我还要删除这些注册表信息?
搞个hive-registry就ok了


我就是因为有了hive的,如果我添加了注册表的信息,如果不删除,那么在重启的时候,就会加载这个驱动,那么问题还不是一样!
点赞  2009-8-25 10:13
用WM_USER+?定义消息
点赞  2009-8-25 11:14
用WM_USER+?定义消息,最简单
点赞  2009-8-25 11:28
在RegisterWindowMessage之前先用isAPIReady(SH_WMGR)判断,
建议使用event通知的方式告诉APP。不建议使用发消息的方式
点赞  2009-8-25 12:36
非常谢谢各位的参与和帮忙!
尤其是guopeixin
--------
我的问题已经解决
我在IST里面做了一个isAPIReady(SH_WMGR)得操作,之后驱动可以很正常的加载了!
谢谢!
------
用event 应该也是可以的,!
点赞  2009-8-25 13:30
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复