我的驱动里面用到了RegisterWindowMessage来注册一个消息,目的是用PostMessage把他发送给应用程序,我用了we-hjb的调试助手调试,一切都是正常的,但当我把DLL加到NK是,启动时就出现异常, 如果我把RegisterWindowMessage部分的代码屏蔽掉,驱动可以正常加载!
我想的是:RegisterWindowMessage函数的使用是不是要等GWES加载起来才可以,在device.exe阶段这个函数是不能用的?
--------
一、有没有什么别的方法可以在驱动中发送消息给应用程序?让驱动可以再开始就可以正常加载!
二、要用RegCreateKeyEx、RegSetValueEx、等函数在系统跑起来把驱动的注册表的信息加进去,然后用ActivateDeviceEx加载! 问题是: 这样的话,在重启的时候我还要删除这些注册表信息?
我现在在做第二种! 看哪位有更好的方法?
>> 我想的是:RegisterWindowMessage函数的使用是不是要等GWES加载起来才可以,在device.exe阶段这个函数是不能用的?
这个我不确定,但是我想更加安全的做法是在使用RegisterWindowMessage之前调用isapiready检查一下是否可以用
>> 有没有什么别的方法可以在驱动中发送消息给应用程序?让驱动可以再开始就可以正常加载
最简单的方法就是setevent,当然了驱动和ap里面的event创建的时候名字必须一致
>> 要用RegCreateKeyEx、RegSetValueEx、等函数在系统跑起来把驱动的注册表的信息加进去,然后用ActivateDeviceEx加载! 问题是: 这样的话,在重启的时候我还要删除这些注册表信息?
搞个hive-registry就ok了
引用: 引用 1 楼 guopeixin 的回复:
>>? 要用RegCreateKeyEx、RegSetValueEx、等函数在系统跑起来把驱动的注册表的信息加进去,然后用ActivateDeviceEx加载! 问题是:? 这样的话,在重启的时候我还要删除这些注册表信息?
搞个hive-registry就ok了
我就是因为有了hive的,如果我添加了注册表的信息,如果不删除,那么在重启的时候,就会加载这个驱动,那么问题还不是一样!
在RegisterWindowMessage之前先用isAPIReady(SH_WMGR)判断,
建议使用event通知的方式告诉APP。不建议使用发消息的方式
非常谢谢各位的参与和帮忙!
尤其是guopeixin
--------
我的问题已经解决
我在IST里面做了一个isAPIReady(SH_WMGR)得操作,之后驱动可以很正常的加载了!
谢谢!
------
用event 应该也是可以的,!