Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

42 lines
849 B

#include "wdmtimer.h"
#pragma PAGEDCODE
CTimer* CWDMTimer::create(TIMER_TYPE Type)
{
return new (NonPagedPool) CWDMTimer(Type);
}
#pragma PAGEDCODE
CWDMTimer::CWDMTimer(TIMER_TYPE Type)
{
KeInitializeTimerEx(&Timer, Type);
};
#pragma PAGEDCODE
CWDMTimer::~CWDMTimer()
{
KeCancelTimer(&Timer);
};
#pragma PAGEDCODE
BOOL CWDMTimer::set(LARGE_INTEGER DueTime,LONG Period,PKDPC Dpc)
{
return KeSetTimerEx(&Timer,DueTime, Period, Dpc);
};
#pragma PAGEDCODE
BOOL CWDMTimer::cancel()
{
return KeCancelTimer(&Timer);
};
#pragma PAGEDCODE
VOID CWDMTimer::delay(ULONG Delay)
{
LARGE_INTEGER duetime;
// Waits for the Timeout to be elapsed.
ASSERT(KeGetCurrentIrql()<=DISPATCH_LEVEL);
duetime.QuadPart = -(LONGLONG)(Delay * 10L * 1000L);
set(duetime,0,NULL);
KeWaitForSingleObject(&Timer, Executive, KernelMode, FALSE, NULL);
}