ha_limin
驱动牛犊
驱动牛犊
  • 注册日期2002-10-12
  • 最后登录2011-07-21
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望23点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2047回复:6

请问在驱动程序中如何进行延时操作?

楼主#
更多 发布于:2002-11-14 16:04
请问在驱动程序中如何进行延时操作?
goodbill
驱动牛犊
驱动牛犊
  • 注册日期2002-11-13
  • 最后登录2017-07-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-11-15 08:54
1. KeDelayExecutionThread must be running at IRQL=PASSIVE_LEVEL
   KeStallExecutionProcessor can be running at any IRQL

2. By the way, you have to finish ISR as soon as posibble to get the higher system\'s performance. Because OS will block other request that is <=  the IRQL now is ruuning.

3. You have to create DPC object and associating the DPC object to the Interrupt object. Then calling KeStallExecutionProcessor in the DPC procedure to delay.

4. Be careful you may miss some interrupt if your delay is long.
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
板凳#
发布于:2002-11-14 17:24
靠,打开了等了一会儿,这么多人回复,早知道就不回复了。
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
地板#
发布于:2002-11-14 17:12
可以定义一个事件,然后利用超时等待要延时的时间
minsoft
驱动小牛
驱动小牛
  • 注册日期2001-07-30
  • 最后登录2007-03-06
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-11-14 16:54
用KeWaitforSingleObject也可以且不占有CPU。
少了e,就少了全部
ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-11-14 16:50
还有这两个函数:
KeDelayExecutionThread
KeStallExecutionProcessor(<50毫秒)
生命驱动,活力无限!
ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-11-14 16:36
用定时器不行吗?
生命驱动,活力无限!
游客

返回顶部