qinxg
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分37分
  • 威望27点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
阅读:1791回复:4

关于KeDelayExecutionThread()的延时,没感觉?

楼主#
更多 发布于:2003-06-04 15:10
// 线程延时xxxms
VOID
ThreadDelayMs( IN ULONG nDelayMs )
{
    LARGE_INTEGER        DelayTime;
    DelayTime.QuadPart = -10 * 1000 * nDelayMs;
    // 10*1000 = 1ms
    KeDelayExecutionThread( KernelMode, FALSE, &DelayTime );
    KdPrint(( \"Delay Time: %dMs.\\n\",nDelayMs ));
} 我调用时,不管nDelayMs为何值,均是呼啸而过.??
swf2003
驱动中牛
驱动中牛
  • 注册日期2003-02-13
  • 最后登录2011-10-28
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-06-04 16:06
我用过好象有用的
你的认可是对我最大的鼓励!
robin_wxg
驱动小牛
驱动小牛
  • 注册日期2003-02-10
  • 最后登录2009-09-21
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望6点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-06-04 16:11
你的LARGE_INTEGER DelayTime好象应该是
            DelayTime.HighPart = 0;
            DelayTime.LowPart =-10 * 1000 * nDelayMs;   // this sets the initial timer
qinxg
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分37分
  • 威望27点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-06-04 18:23
 

你的LARGE_INTEGER DelayTime好象应该是
DelayTime.HighPart = 0;
DelayTime.LowPart =-10 * 1000 * nDelayMs; // this sets the initial timer
 

应该是: DelayTime.HighPart = -1吧.这样是可以延时的,估计是DDK编译64位整数时有问题.
ok!.谢谢.
swf2003
驱动中牛
驱动中牛
  • 注册日期2003-02-13
  • 最后登录2011-10-28
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-06-05 09:38

LARGE_INTEGER
  RtlConvertLongToLargeInteger(
    IN LONG  SignedInteger
    );
转换比较方便。
你的认可是对我最大的鼓励!
游客

返回顶部