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);
|
|||
|
}
|
|||
|
|