lsshao
驱动牛犊
驱动牛犊
  • 注册日期2004-02-03
  • 最后登录2007-10-29
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望5点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:2309回复:0

DriverNetwork miniport驱动学习(6)

楼主#
更多 发布于:2004-03-18 15:16
使用定时器
KNdisTimer 类为所有网络驱动程序使用NDIS定时器服务提供了一个统一的方法。
NDIS定时器服务(Ndis[M]SetTimer)允许网络驱动在规定的毫秒时间之后重新回调。除非请求被取消(Ndis[M]CancelTimer),NDIS在DISPATCH_LEVEL级上调用专有的静态回调函数(原型:PNDIS_TIMER_FUNCTION)。
DriverNetworks允许定时器用在用户adapter类中(例如,调定时回调一个adapter类的成员函数)。
对于NDIS miniport 和 intermediate驱动,KNdisTimer对象常常作为数据成员编译到KNdisMiniAdapter派生类或者KNdisFilterAdapter派生类中。在定时器对象使用之前,必须使用KNdisTimer:Initialize()方法对其初始化。初始化过程在基本NDIS定时器对象和特定成员函数之间建立关联。定时器初始化工作应该在adapter的Initialize()处理程序中完成(例如,KNdisMiniAdapter::Initialize())。成功初始化之后,定时器的使用方法有:KNdisTimer::Set()和KNdisTimer::Cancel()。
KNdisTimer的编程顺序如下:
1. 在类(KNdisMiniAdapter派生类)中声明一个定时器对象。
2. 用KNDIS_DECLARE_TIMERCALLBACK宏声明一个成员定时器溢出回调。
3. 在Initialize()处理程序中用KNDIS_MEMBER_CALLBACK宏初始化定时器。
4. 实现回调成员函数,原型:void Timeout()。
游客

返回顶部