lvyingf
游客
游客
阅读:1750回复:3

FUNCTION:OnIdle(LONG lCount),谁愿意给我解释一下,它是什么时候被触发,是谁调用的。。。

楼主#
更多 发布于:2001-07-18 18:11
我正在研究WIN98的运行内核,我在跟踪AP运行时,发现消息运行机制的消息就是通过这个函数触发调用的,但我不知道它又是谁触发调用的,是系统定时触发,还是别的。另外,它的唯一的形参是一个定时变量,具体是怎么控制的不清楚,看MSDN也没有弄明白。其实最可能的就是系统定时触发,但我用DEBUG跟了一下,在WINDOWS没有新消息产生的时候,不对它产生调用,只有我移动了一下鼠标(或别的)时,它才会被调用。看了一下它的定时变量,为0。
谁能给我具体讲一下,先谢谢了。

FUNCTION:OnIdle(LONG lCount),谁愿意给我解释一下,它是什么时候被触发,是谁调用的。。。

[lvyingf 编辑于 2001-07-19 11:07]
lvyingf
游客
游客
沙发#
发布于:2001-07-19 18:10
OnIdle()函数是在应用程序的消息队列中没有消息时由Run()函数调用。
应用程序的大部分时间都是在应用类的Run()成员函数中打转转,WinMain()函数在调用InitInstance()进行初始化完毕后,就调用Run()处理消息循环。
lzy
lzy
驱动中牛
驱动中牛
  • 注册日期2001-05-24
  • 最后登录2006-04-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-07-19 22:35
那 OnIdle() 都做些什么呢?
里面不会是些 nop 吧? :confused:

;) 我欲乘风归去 ;)
lvyingf
游客
游客
地板#
发布于:2001-07-20 09:13
对于你自己的AP来说,它的确如此(对你的AP,它只做一些状态条更新等内容,如果你没有在这个函数里增加一些后台程序的话)。但对于整个WINDOWS的运行来说,它就是至关重要的一个函数了。因为在RUN()循环中,处理的是AP私有的消息(不一定对,我还在继续分析),此时循环中这个空闲处理函数它做了一件事就是扫描WINDOWS打开的所有进程中有无新的消息,有,就会进行相应的处理。

如果我说的不对,不要见笑,请多指教
游客

返回顶部