Multimédia Timer

Le multimédia Timer est postérieur aux waitables timer. Il permet de synchroniser l'appel d'une fonction sur un timer. Il permet de descendre à la ms et semble calé sur l'horloge système, ne présentant aucune dérive. Toutefois, les activations peuvent être très rapprochées (50 us) pour compenser les retards dus aux DPC et autres IRQ

La fonction déclenchée s'exécute au niveau de priorité Thread THREAD_PRIORITY_CRITICAL soit 31 si le process est temps réel ou 15.

TIMECAPS tc; // Capacité du timer

timeGetDevCaps(&tc, sizeof(TIMECAPS)); // interroger sur les capacités du timer

timeBeginPeriod(ResolutionMinMultimedia); // indiquer la fréquence max nécessaire

{     NumTimerMM = timeSetEvent( periodems,
                ResolutionMultimedia, // résolution demandée
                TimeProcVide,                                 // fonction à déclencher
                    0,TIME_PERIODIC);

        .....

        timeKillEvent(NumTimerMM); // fin des déclenchements

}

timeEndPeriod(ResolutionMinMultimedia); // fin de l'utilisation des timers

Définitions et Prototypes

bullettypedef struct {
UINT wPeriodMin;
UINT wPeriodMax;
} TIMECAPS;
bulletMMRESULT timeBeginPeriod(
UINT uPeriod    // période mimimum nécessaire
);  
bulletMMRESULT timeEndPeriod(
UINT uPeriod    // précédante période indiquée
);
bulletMMRESULT timeSetEvent(
UINT uDelay,          // délai ou période d'activation
UINT uResolution,    // précision du délai demandé
LPTIMECALLBACK lpTimeProc,   // fonction appellée
DWORD dwUser,   
UINT fuEvent    // périodique ou on shot
);   


 

Accueil ] Remonter ]