阅读:1612回复:5
2000下如何重初始化驱动????高手请指教
我的驱动用start=0加载,某些系统服务还不能使用,想把用到这些服务的代码收集为一例程,等系统初始化完成后回调。
已经尝试过用IoRegisterBootDriverReinitialization和IoRegisterDriverReinitialization注册回调,均不能实现我的需求。 有没有相关的系统事件?或其他实现办法? 高手请指教,不胜感激! |
|
沙发#
发布于:2003-07-30 13:33
在DriverEntry申明 ReInitialize例程调用IoRegisterDriverReinitialization注册回调
如果发现环境不合适.再次调用IoRegisterDriverReinitialization注册自己. |
|
|
板凳#
发布于:2003-07-30 14:59
谢谢楼上!
你所讲的我也曾经尝试过,但2000启动时卡在那里,一直等到我注册回调、回调注册了1000000次才继续加载。 我想可能系统要等这个再初始化例程全部执行完才进入第二阶段system阶段的加载。 |
|
地板#
发布于:2003-07-31 14:49
难道真没办法吗?
|
|
地下室#
发布于:2003-07-31 17:11
reinitialization routine 在有新的 Driver 被调用。怎么会被重复调用 1000000 次呢?你的机器里不可能装这么多 Driver 吧?不明白。
在 reinitialization routine 里检测到环境不符合自己的需求,则再重新注册一遍,直到满意为止,是不是你有什么地方搞错了?比如说陷入了循环之类的? |
|
5楼#
发布于:2003-08-01 10:43
不好意思,我没说清楚
第一次我像楼上那位老兄所说的那样,一直注册回调,以我要做的操作成功为退出条件,结果...死悄悄!只好拆硬盘挂别的机上删掉sys文件才能启动。 第二次我多加了一个退出条件:i<1000000,也就是一个reinit routine 接一个reinit routine,回调了1000000次。 真没人有办法吗? 看来我只好用“绝招”了:开一线程,一秒做一次操作,成功则退出。 |
|