Share via


IReferenceClock ::AdvisePeriodic, méthode (strmif.h)

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

La AdvisePeriodic méthode crée une demande d’avis périodique.

Syntaxe

HRESULT AdvisePeriodic(
  [in]  REFERENCE_TIME startTime,
  [in]  REFERENCE_TIME periodTime,
  [in]  HSEMAPHORE     hSemaphore,
  [out] DWORD_PTR      *pdwAdviseCookie
);

Paramètres

[in] startTime

Heure de la première notification, en unités de 100 nanosecondes. Doit être supérieur à zéro et inférieur à MAX_TIME.

[in] periodTime

Temps entre les notifications, en unités de 100 nanosecondes. Doit être supérieur à zéro.

[in] hSemaphore

Handle vers un sémaphore, créé par l’appelant.

[out] pdwAdviseCookie

Pointeur vers une variable qui reçoit un identificateur pour la demande de conseil.

Valeur retournée

Retourne une valeur HRESULT . Les valeurs possibles sont les suivantes.

Code de retour Description
S_OK
Réussite.
E_INVALIDARG
Valeurs de temps non valides.
E_OUTOFMEMORY
Échec.
E_POINTER
Argument pointeur NULL .

Remarques

À chaque heure de notification, l’horloge libère le sémaphore spécifié dans le paramètre hSemaphore . Lorsqu’aucune autre notification n’est requise, appelez IReferenceClock ::Unadvise et transmettez la valeur pdwAdviseToken retournée par cet appel.

L’exemple de code suivant crée une demande d’avertissement qui signale cinq secondes à partir de sa création, et à nouveau toutes les secondes par la suite :

C++
IReferenceClock *pRefClock = NULL ; Obtenir un pointeur IReferenceClock (non affiché).

DWORD dwAdviseToken ; HANDLE hSemaphore = CreateSemaphore(NULL, 0, 0x7FFFFFFF, NULL) ; REFERENCE_TIME rtPeriodTime = 10000000 ; Un intervalle d’une seconde REFERENCE_TIME rtNow ;

pRefClock-GetTime>(&rtNow) ; pRefClock-AdvisePeriodic>(rtNow + (5 * rtPeriodTime), rtPeriodTime, hSemaphore, &dwAdviseToken) ; ...

pRefClock->Unadvise(dwAdviseToken);

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête strmif.h (include Dshow.h)
Bibliothèque Strmiids.lib

Voir aussi

Codes d’erreur et de réussite

IReferenceClock, interface