MiniportTimer (Windows Embedded CE 6.0)
1/6/2010
MiniportTimer is a required function if a driver's NIC does not generate interrupts. Otherwise, one or more MiniportTimer functions are optional.
Syntax
VOID MiniportTimer(
PVOID SystemSpecific1,
PVOID FunctionContext,
PVOID SystemSpecific2,
PVOID SystemSpecific3
);
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
Header | externs.h |
Windows Embedded CE | Windows CE .NET 4.0 and later |
See Also
Reference
NDIS Upper-Edge Functions
MiniportHalt
MiniportInitialize
NdisAcquireSpinLock
NdisAllocateSpinLock
NdisDprAcquireSpinLock
NdisMCancelTimer
NdisMInitializeTimer
NdisMSetPeriodicTimer
NdisMSetTimer