阅读:2487回复:3
请问如何在kernel驱动程序中用定时器? 有这么一个东东么? 如果没有的化,或者要启动一个线程?
?
|
|
最新喜欢:![]()
|
沙发#
发布于:2001-09-21 08:15
用户被禁言,该主题自动屏蔽! |
|
板凳#
发布于:2001-09-21 13:29
[QUOTE]原本由 薛宗棋 发表
[B] ? [/B][/QUOTE] 先: LARGE_INTEGER StartTickCount; KeQueryTickCount( &StartTickCount); ULONG UnitsOf100ns = KeQueryTimeIncrement(); 在Loop中: LARGE_INTEGER TickCountNow; KeQueryTickCount( &TickCountNow); ULONG ticks = (ULONG)(TickCountNow.QuadPart - StartTickCount.QuadPart); if( ticks*UnitsOf100ns/10000000 >= dx->UsbTimeout) { status = STATUS_NO_MEDIA_IN_DEVICE; break; } 就可以了! 如果可以请给分???呵呵! |
|
|
地板#
发布于:2001-09-21 16:38
可以用定时器派发对象例子如下:
KeInitializeTimerEx(&TransferExtension>Timer,SynchronizationEvent);//初始化定时器时间 KeInitializeDpc(&TransferExtension->Dpc, callbackfunction, TransferExtension); //初始化时间分发例程 dueTime.QuadPart = -10000 * 2;//2ms 时间间隔 inQueue = KeSetTimer(&TransferExtension->Timer, dueTime, &TransferExtension->Dpc); 器中递归的调用callbackfunction即可。 |
|