Condividi tramite


Metodo IReferenceClock::AdvisePeriodic (strmif.h)

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Il AdvisePeriodic metodo crea una richiesta di consulenza periodica.

Sintassi

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

Parametri

[in] startTime

Ora della prima notifica, in 100-nanosecondi unità. Deve essere maggiore di zero e minore di MAX_TIME.

[in] periodTime

Tempo compreso tra le notifiche, in unità da 100 nanosecondi. Deve essere maggiore di zero.

[in] hSemaphore

Gestire un semaforo creato dal chiamante.

[out] pdwAdviseCookie

Puntatore a una variabile che riceve un identificatore per la richiesta di consulenza.

Valore restituito

Restituisce un valore HRESULT . Di seguito sono indicati alcuni valori possibili.

Codice restituito Descrizione
S_OK
Operazione completata.
E_INVALIDARG
Valori di tempo non validi.
E_OUTOFMEMORY
Esito negativo.
E_POINTER
Argomento puntatore NULL.

Commenti

A ogni notifica, l'orologio rilascia il semaforo specificato nel parametro hSemaphore . Quando non sono necessarie ulteriori notifiche, chiamare IReferenceClock::Unadvise e passare il valore pdwAdviseToken restituito da questa chiamata.

L'esempio di codice seguente crea una richiesta di avviso che segnala cinque secondi dal momento in cui viene creata e nuovamente ogni secondo successivamente:

C++
IReferenceClock *pRefClock = NULL; Ottenere un puntatore IReferenceClock (non visualizzato).

DWORD dwAdviseToken; HANDLE hSemaphore = CreateSemaphore(NULL, 0, 0x7FFFFFFF, NULL); REFERENCE_TIME rtPeriodTime = 10000000; Un secondo intervallo REFERENCE_TIME rtNow;

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

pRefClock->Unadvise(dwAdviseToken);

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione strmif.h (include Dshow.h)
Libreria Strmiids.lib

Vedi anche

Codici errore e esito positivo

Interfaccia IReferenceClock