Previous Next

NdisInitializeTimer

NdisInitializeTimer initializes a timer object associated with a driver’s timer function.

VOID
  NdisInitializeTimer(
    IN OUT PNDIS_TIMER  Timer,
    IN PNDIS_TIMER_FUNCTION  TimerFunction,
    IN PVOID  FunctionContext
    );

Parameters

Timer
Pointer to caller-supplied, resident storage that receives a timer object.
TimerFunction
Specifies the entry point of a caller-supplied timer function that is called when the timer expires. The following describes the syntax of this timer function:
  VOID 
    (*PNDIS_TIMER_FUNCTION)(
      IN PVOID  SystemSpecific1,
      IN PVOID  FunctionContext,
      IN PVOID  SystemSpecific2,
      IN PVOID  SystemSpecific3
      );
FunctionContext
Pointer to a caller-supplied context to be passed to the specified timer function when it is called.

Headers

Declared in Ndis.h. Include Ndis.h.

Comments

A protocol driver might request that NDIS provide timing services. To request timing services, this protocol driver calls NdisInitializeTimer to set up the driver’s timer function. Typically, NdisInitializeTimer is called when a driver initializes. The protocol driver must call NdisInitializeTimer with a caller-supplied pointer to store a timer object, thereby associating a driver-supplied timer function with the timer object. The protocol driver must call NdisInitializeTimer before the driver passes the Timer pointer to any other Ndis..Timer function.

Calls to the NdisSetTimer function insert the timer object in the system timer queue. Calls to NdisCancelTimer dequeue the timer object if it is currently queued. Only one instance of a particular timer object can be queued at any given moment.

After a driver calls NdisSetTimer, the timer object at Timer is queued until the interval specified in the call expires. After the interval expires, the timer object is dequeued and the caller-supplied TimerFunction is run once at IRQL = DISPATCH_LEVEL as soon as a processor becomes available.

Callers of NdisInitializeTimer run at IRQL = PASSIVE_LEVEL.

See Also

NdisCancelTimer, NdisSetTimer