Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

84 lines
2.5 KiB

/****************************** Module Header ******************************\
* Module Name: timers.c
*
* Copyright (c) 1985 - 1999, Microsoft Corporation
*
* This module contains GDI-callable exports from user. No user code
* should call any of these routines.
*
* History:
* 3-Jun-1998 AndrewGo Created.
\***************************************************************************/
#include "precomp.h"
#pragma hdrstop
/***************************************************************************\
* UserSetTimer
*
* GDI-callable routine to enable a system timer on the RIT.
*
* 6/2/98 AndrewGo Created
\***************************************************************************/
UINT_PTR UserSetTimer(
UINT dwElapse,
PVOID pTimerFunc)
{
UINT_PTR id;
PTIMER ptmr;
/*
* GDI may call during ChangeDisplaySettings, in which case the
* critical section will already be held. GDI may also call during
* CreateDC("Device"), in which case the critical section will not
* already be held.
*/
BEGIN_REENTERCRIT();
/*
* If the RIT hasn't been started yet, let GDI know this by returning
* failure. Once we've initialized the RIT, we'll let GDI know
* that GDI can start its timers by calling GreStartTimers().
*/
if (gptmrMaster) {
id = InternalSetTimer(NULL, 0, dwElapse, (TIMERPROC_PWND) pTimerFunc, TMRF_RIT);
/*
* We don't want cleanup to be done on thread termination. Rather
* than creating a new flag and adding more code to InternalSetTimer,
* we disable cleanup by modifying the timer directly.
*/
if (id) {
ptmr = FindTimer(NULL, id, TMRF_RIT, FALSE);
UserAssert(ptmr);
ptmr->ptiOptCreator = NULL;
}
} else {
id = 0;
}
END_REENTERCRIT();
return id;
}
/***************************************************************************\
* UserKillTimer
*
* 6/2/98 AndrewGo Created
\***************************************************************************/
VOID UserKillTimer(
UINT_PTR nID)
{
/*
* GDI may call during ChangeDisplaySettings, in which case the
* critical section will already be held. GDI may also call any
* time its PDEV reference counts go to zero, in which case the
* critical section will not already be held.
*/
BEGIN_REENTERCRIT();
KILLRITTIMER(NULL, nID);
END_REENTERCRIT();
}