- Dequeue the timer earlier so the timer queue will be in a valid state if any timers are modified during the miniport's timer callback

svn path=/trunk/; revision=47825
This commit is contained in:
Cameron Gutman 2010-06-22 05:37:31 +00:00
parent 34b41a733c
commit f840fe0a50

View file

@ -170,11 +170,6 @@ MiniTimerDpcFunction(PKDPC Dpc,
{
PNDIS_MINIPORT_TIMER Timer = DeferredContext;
Timer->MiniportTimerFunction(Dpc,
Timer->MiniportTimerContext,
SystemArgument1,
SystemArgument2);
/* Only dequeue if the timer has a period of 0 */
if (!Timer->Timer.Period)
{
@ -183,6 +178,11 @@ MiniTimerDpcFunction(PKDPC Dpc,
if (!DequeueMiniportTimer(Timer)) ASSERT(FALSE);
KeReleaseSpinLockFromDpcLevel(&Timer->Miniport->Lock);
}
Timer->MiniportTimerFunction(Dpc,
Timer->MiniportTimerContext,
SystemArgument1,
SystemArgument2);
}