89 lines
1.8 KiB
C
89 lines
1.8 KiB
C
/*++
|
|
|
|
Copyright (c) 1991 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
bowtimer.h
|
|
|
|
Abstract:
|
|
|
|
This module declares definitions dealing with bowser timers.
|
|
|
|
Author:
|
|
|
|
Larry Osterman (larryo) 6-May-1991
|
|
|
|
Revision History:
|
|
|
|
6-May-1991 larryo
|
|
|
|
Created
|
|
|
|
--*/
|
|
#ifndef _BOWTIMER_
|
|
#define _BOWTIMER_
|
|
|
|
struct _TRANSPORT;
|
|
|
|
typedef
|
|
NTSTATUS
|
|
(*PBOWSER_TIMER_ROUTINE)(
|
|
IN struct _TRANSPORT *Transport
|
|
);
|
|
|
|
// BOWSER_TIMER flags:
|
|
// Canceled is TRUE when a timer is cancelled but is already in
|
|
// the dpc queue.
|
|
//
|
|
// AlreadySet is used to ensure we stop the timer before restarting it.
|
|
//
|
|
// Reset is set to TRUE when a timer has been stopped and restarted while
|
|
// in the dpc queue. The Lock is used to ensure ordered access.
|
|
// Note: a timer can be stopped and reset multiple times before it gets
|
|
// to the front of the dpc queue.
|
|
//
|
|
|
|
typedef struct _BOWSER_TIMER {
|
|
KDPC Dpc;
|
|
KTIMER Timer;
|
|
KSPIN_LOCK Lock;
|
|
KEVENT TimerInactiveEvent;
|
|
PBOWSER_TIMER_ROUTINE TimerRoutine;
|
|
PVOID TimerContext;
|
|
LARGE_INTEGER Timeout;
|
|
WORK_QUEUE_ITEM WorkItem;
|
|
BOOLEAN AlreadySet;
|
|
BOOLEAN Initialized;
|
|
BOOLEAN Canceled;
|
|
BOOLEAN SetAgain;
|
|
|
|
} BOWSER_TIMER, *PBOWSER_TIMER;
|
|
|
|
VOID
|
|
BowserInitializeTimer(
|
|
IN PBOWSER_TIMER Timer
|
|
);
|
|
|
|
VOID
|
|
BowserStopTimer (
|
|
IN PBOWSER_TIMER Timer
|
|
);
|
|
|
|
VOID
|
|
BowserUninitializeTimer(
|
|
IN PBOWSER_TIMER Timer
|
|
);
|
|
|
|
BOOLEAN
|
|
BowserStartTimer (
|
|
IN PBOWSER_TIMER Timer,
|
|
IN ULONG MillisecondsToExpireTimer,
|
|
IN PBOWSER_TIMER_ROUTINE TimerExpirationRoutine,
|
|
IN PVOID Context
|
|
);
|
|
|
|
#endif // _BOWTIMER_
|
|
|
|
|