91 lines
1.8 KiB
C
91 lines
1.8 KiB
C
//
|
||
//
|
||
// CTESTUFF.C
|
||
//
|
||
// This file contains Common Transport Environment code to handle
|
||
// OS dependent functions such as allocating memory etc.
|
||
//
|
||
//
|
||
#include "precomp.h"
|
||
|
||
// to convert a millisecond to a 100ns time
|
||
//
|
||
#define MILLISEC_TO_100NS 10000
|
||
|
||
|
||
//----------------------------------------------------------------------------
|
||
PVOID
|
||
CTEStartTimer(
|
||
IN CTETimer *pTimerIn,
|
||
IN ULONG DeltaTime,
|
||
IN CTEEventRtn TimerExpiry,
|
||
IN PVOID Context OPTIONAL
|
||
)
|
||
/*++
|
||
Routine Description:
|
||
|
||
This Routine starts a timer.
|
||
|
||
Arguments:
|
||
|
||
Timer - Timer structure
|
||
TimerExpiry - completion routine
|
||
|
||
Return Value:
|
||
|
||
PVOID - a pointer to the memory or NULL if a failure
|
||
|
||
--*/
|
||
|
||
{
|
||
LARGE_INTEGER Time;
|
||
|
||
//
|
||
// initialize the DPC to have the correct completion routine and context
|
||
//
|
||
KeInitializeDpc(&pTimerIn->t_dpc,
|
||
(PVOID)TimerExpiry, // completion routine
|
||
Context); // context value
|
||
|
||
//
|
||
// convert to 100 ns units by multiplying by 10,000
|
||
//
|
||
Time.QuadPart = UInt32x32To64(DeltaTime,(LONG)MILLISEC_TO_100NS);
|
||
|
||
//
|
||
// to make a delta time, negate the time
|
||
//
|
||
Time.QuadPart = -(Time.QuadPart);
|
||
|
||
ASSERT(Time.QuadPart < 0);
|
||
|
||
(VOID)KeSetTimer(&pTimerIn->t_timer,Time,&pTimerIn->t_dpc);
|
||
|
||
return(NULL);
|
||
}
|
||
//----------------------------------------------------------------------------
|
||
VOID
|
||
CTEInitTimer(
|
||
IN CTETimer *pTimerIn
|
||
)
|
||
/*++
|
||
Routine Description:
|
||
|
||
This Routine initializes a timer.
|
||
|
||
Arguments:
|
||
|
||
Timer - Timer structure
|
||
TimerExpiry - completion routine
|
||
|
||
Return Value:
|
||
|
||
PVOID - a pointer to the memory or NULL if a failure
|
||
|
||
--*/
|
||
|
||
{
|
||
KeInitializeTimer(&pTimerIn->t_timer);
|
||
}
|
||
|