Previous Next

MiniportTimer

The MiniportTimer function is required if a miniport driver sets a timer.

VOID 
  MiniportTimer(
    IN PVOID  SystemSpecific1,
    IN PVOID  FunctionContext,
    IN PVOID  SystemSpecific2,
    IN PVOID  SystemSpecific3
    );

Parameters

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

Headers

Declared in Ndis.h. Include Ndis.h.

Comments

A miniport driver can 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.

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 a MiniportTimer function, provided that 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 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.

MiniportTimer runs at IRQL = DISPATCH_LEVEL.

See Also

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