lckant
驱动牛犊
驱动牛犊
  • 注册日期2003-04-22
  • 最后登录2004-05-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1612回复:5

2000下如何重初始化驱动????高手请指教

楼主#
更多 发布于:2003-07-30 12:00
我的驱动用start=0加载,某些系统服务还不能使用,想把用到这些服务的代码收集为一例程,等系统初始化完成后回调。
已经尝试过用IoRegisterBootDriverReinitialization和IoRegisterDriverReinitialization注册回调,均不能实现我的需求。
有没有相关的系统事件?或其他实现办法?

高手请指教,不胜感激!
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2003-07-30 13:33
在DriverEntry申明 ReInitialize例程调用IoRegisterDriverReinitialization注册回调
如果发现环境不合适.再次调用IoRegisterDriverReinitialization注册自己.
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
lckant
驱动牛犊
驱动牛犊
  • 注册日期2003-04-22
  • 最后登录2004-05-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-07-30 14:59
谢谢楼上!
你所讲的我也曾经尝试过,但2000启动时卡在那里,一直等到我注册回调、回调注册了1000000次才继续加载。
我想可能系统要等这个再初始化例程全部执行完才进入第二阶段system阶段的加载。
lckant
驱动牛犊
驱动牛犊
  • 注册日期2003-04-22
  • 最后登录2004-05-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-07-31 14:49
难道真没办法吗?
liuyang714
驱动牛犊
驱动牛犊
  • 注册日期2003-06-04
  • 最后登录2003-08-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-07-31 17:11
reinitialization routine 在有新的 Driver 被调用。怎么会被重复调用 1000000 次呢?你的机器里不可能装这么多 Driver 吧?不明白。
在 reinitialization routine 里检测到环境不符合自己的需求,则再重新注册一遍,直到满意为止,是不是你有什么地方搞错了?比如说陷入了循环之类的?
lckant
驱动牛犊
驱动牛犊
  • 注册日期2003-04-22
  • 最后登录2004-05-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-08-01 10:43
不好意思,我没说清楚
第一次我像楼上那位老兄所说的那样,一直注册回调,以我要做的操作成功为退出条件,结果...死悄悄!只好拆硬盘挂别的机上删掉sys文件才能启动。
第二次我多加了一个退出条件:i<1000000,也就是一个reinit routine 接一个reinit routine,回调了1000000次。

真没人有办法吗?

看来我只好用“绝招”了:开一线程,一秒做一次操作,成功则退出。
游客

返回顶部