Share via


MiniportTimer (Windows CE 5.0)

Send Feedback

MiniportTimer is a required function if a driver's NIC does not generate interrupts. Otherwise, one or more MiniportTimer functions are optional.

VOID MiniportTimer(  PVOIDSystemSpecific1,PVOIDFunctionContext,PVOIDSystemSpecific2,PVOIDSystemSpecific3);

Parameters

  • SystemSpecific1
    [in] Points to a system-specific variable, which is opaque to MiniportTimer and reserved for system use.
  • FunctionContext
    [in] Specifies the context pointer passed to NdisMInitializeTimer when MiniportInitialize set up the associated timer object.
  • SystemSpecific2
    [in] Points to a system-specific value that is reserved for system use.
  • SystemSpecific3
    [in] Points to a system-specific value that is reserved for system use.

Remarks

The driver of a NIC that does not generate interrupts must have a MiniportTimer function to poll the state of the NIC. After such a driver's MiniportInitialize function sets up the driver-allocated timer object with NdisMInitializeTimer, a call to NdisMSetPeriodicTimer causes the MiniportTimer function associated with the timer object to be run repeatedly and automatically at the interval specified by MillisecondsPeriod. Such a polling MiniportTimer function monitors the state of the NIC to determine when to make indications, when to complete pending sends, and so forth. In effect, such a polling MiniportTimer function has the same functionality as the MiniportHandleInterrupt function in the driver of a NIC that does generate interrupts.

By contrast, calling NdisMSetTimer causes the MiniportTimer function associated with the timer object to be run once when the given MillisecondsToDelay expires. Such a MiniportTimer function usually performs some driver-determined action if a particular operation times out.

If either type of MiniportTimer function shares resources with other driver functions, the driver should synchronize access to those resources with a spin lock.

Any NIC driver or intermediate driver can have more than one MiniportTimer function at the discretion of the driver writer. Each such MiniportTimer function must be associated with a driver-allocated and initialized timer object.

A call to NdisMCancelTimer cancels execution of non-polling MiniportTimer function, if the interval passed in the immediately preceding call to NdisMSetTimer has not yet expired. After a call to NdisMSetPeriodicTimer, a call to NdisMSetTimer or NdisMCancelTimer with the same timer object disables a polling MiniportTimer function: either the MiniportTimer function runs once, or it is canceled.

The MiniportHalt function of any driver with a MiniportTimer function should call NdisMCancelTimer to ensure that the MiniportTimer function does not attempt to access resources that MiniportHalt has already released.

Requirements

OS Versions: Windows CE .NET 4.0 and later.
Header: Externs.h.

See Also

MiniportHalt | MiniportInitialize | NdisAcquireSpinLock | NdisAllocateSpinLock | NdisDprAcquireSpinLock | NdisMCancelTimer | NdisMInitializeTimer | NdisMSetPeriodicTimer | NdisMSetTimer

Send Feedback on this topic to the authors

Feedback FAQs

© 2006 Microsoft Corporation. All rights reserved.