阅读:1223回复:3
请教ndis中定时器的问题,50分重谢
我在MPInitialize中调用
1、NdisMInitializeTimer(&pAdapt->PacketProcessTimer, MiniportAdapterHandle,(PNDIS_TIMER_FUNCTION)PacketProcessTimerCallback,pAdapt); 初始化定时器 2、NdisMSetPeriodicTimer(&pAdapt->PacketProcessTimer,2000); // 每隔2秒调用PacketProcessTimerCallback函数。 直接启动定时器 加载该驱动以后,功能运行正常,可是卸载该驱动时,系统直接死机,是不是需要做些工作将定时器kill掉,像应用程序中的那样?? :( |
|
最新喜欢:baoyib... |
沙发#
发布于:2003-07-09 17:11
调用NDISMCANCELTIMER.
|
|
|
板凳#
发布于:2003-07-09 21:09
[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; } //我没试过 |
|
|
地板#
发布于:2003-07-09 21:12
可以用定时器派发对象例子如下:
KeInitializeTimerEx(&TransferExtension>Timer,SynchronizationEvent);//初始化定时器时间 KeInitializeDpc(&TransferExtension->Dpc, callbackfunction, TransferExtension); //初始化时间分发例程 dueTime.QuadPart = -10000 * 2;//2ms 时间间隔 inQueue = KeSetTimer(&TransferExtension->Timer, dueTime, &TransferExtension->Dpc); 器中递归的调用callbackfunction即可。 |
|
|