lucy_huiminz
驱动小牛
驱动小牛
  • 注册日期2002-06-18
  • 最后登录2009-02-11
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望6点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
阅读:1223回复:3

请教ndis中定时器的问题,50分重谢

楼主#
更多 发布于:2003-07-09 15:28
我在MPInitialize中调用

1、NdisMInitializeTimer(&pAdapt->PacketProcessTimer, MiniportAdapterHandle,(PNDIS_TIMER_FUNCTION)PacketProcessTimerCallback,pAdapt);
初始化定时器

2、NdisMSetPeriodicTimer(&pAdapt->PacketProcessTimer,2000); // 每隔2秒调用PacketProcessTimerCallback函数。
直接启动定时器

加载该驱动以后,功能运行正常,可是卸载该驱动时,系统直接死机,是不是需要做些工作将定时器kill掉,像应用程序中的那样??


:(

最新喜欢:

baoyibao99baoyib...
flywithlove
驱动小牛
驱动小牛
  • 注册日期2002-11-05
  • 最后登录2009-10-09
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望18点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-07-09 17:11
调用NDISMCANCELTIMER.
痛并快乐着!
antspower
驱动中牛
驱动中牛
  • 注册日期2002-10-17
  • 最后登录2010-08-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值2点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于: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;
}
//我没试过
放弃瘟草,现吃李草
antspower
驱动中牛
驱动中牛
  • 注册日期2002-10-17
  • 最后登录2010-08-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值2点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于: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即可。


 
放弃瘟草,现吃李草
游客

返回顶部