www.pudn.com > PPPOE.rar > timer.h


 
//******************************************************************** 
//	ÈÕÆÚ:	2004/08/24 - 24:8:2004   18:57 
//	Ãûǰ:	tiamo 
//	ÃèÊö:	timer routine 
//********************************************************************* 
 
#pragma once 
 
// timer sig 
#define TIMER_SIG														MAKE_SIG('T','I','M','E') 
 
// forward declaration 
typedef struct __tagTimerItem *PTIMER_ITEM; 
 
// timer routine 
typedef VOID (*TIMER_ROUTINE)(PTIMER_ITEM pItem,PVOID pContext,PVOID pCancelContext); 
 
// timer 
typedef struct __tagTimer 
{ 
	LIST_ENTRY										m_ltTimerItemsHead;		// timer item head 
	NDIS_TIMER										m_ndisTimer;			// ndis timer 
	ULONG											m_ulSig;				// sig 
	NDIS_SPIN_LOCK									m_lockSelf;				// lock self 
}TIMER,*PTIMER; 
 
// timer item 
typedef struct __tagTimerItem 
{ 
	LIST_ENTRY										m_ltTimerItemAnchor;	// list anchor 
	TIMER_ROUTINE									m_pTimerRoutine;		// routine 
	LARGE_INTEGER									m_ullExecuteTime;		// exec time 
	PVOID											m_pContext;				// context 
}TIMER_ITEM,*PTIMER_ITEM; 
 
// public routine 
extern "C" 
{ 
	// init timer system,PASSIVE_LEVEL only 
	VOID InitializeTimerSystem(); 
 
	// shut down timer system,<= DISPATCH_LEVEL 
	VOID ShutdownTimerSystem(); 
 
	// schedule a timer call,<= DISPATCH_LEVEL 
	VOID ScheduleTimerItem(PTIMER_ITEM pItem,TIMER_ROUTINE pRoutine,ULONG ulMsDelay,PVOID pContext); 
 
	// cancel timer call <= DISPATCH_LEVEL 
	VOID CancelTimerItem(PTIMER_ITEM pItem,PVOID pCancelContext); 
 
	// init timer item <= DISPTACH_LEVEL 
	VOID InitializeTimerItem(PTIMER_ITEM pItem); 
} 
	 
// private routine 
extern "C" 
{ 
	// common timer routine for ndis init timer,run only at DISPATCH_LEVEL 
	VOID CommonTimerRoutine(PVOID pSystem1,PVOID pContext,PVOID pSystem3,PVOID pSystem4); 
 
	// set timer run only at DISPATCH_LEVEL 
	VOID SetTimer(LARGE_INTEGER ullCurrentTime); 
} 
 
// global timer 
extern TIMER g_timer;