Compartir a través de


Método IReferenceClock::AdvisePeriodic (strmif.h)

[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y Audio/Video Capture en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

El AdvisePeriodic método crea una solicitud de aviso periódica.

Sintaxis

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

Parámetros

[in] startTime

Hora de la primera notificación, en unidades de 100 nanosegundos. Debe ser mayor que cero y menor que MAX_TIME.

[in] periodTime

Tiempo entre las notificaciones, en unidades de 100 nanosegundos. Debe ser mayor que cero.

[in] hSemaphore

Identificador de un semáforo, creado por el autor de la llamada.

[out] pdwAdviseCookie

Puntero a una variable que recibe un identificador para la solicitud de aviso.

Valor devuelto

Devuelve un valor HRESULT . Estos son algunos de los valores posibles.

Código devuelto Descripción
S_OK
Correcto.
E_INVALIDARG
Valores de hora no válidos.
E_OUTOFMEMORY
Error.
E_POINTER
Argumento de puntero NULL.

Comentarios

En cada hora de notificación, el reloj libera el semáforo especificado en el parámetro hSemaphore . Cuando no se requieran más notificaciones, llame a IReferenceClock::Unadvise y pase el valor pdwAdviseToken devuelto desde esta llamada.

En el ejemplo de código siguiente se crea una solicitud de aviso que indica cinco segundos a partir del momento en que se crea y, de nuevo, cada segundo después:

C++
IReferenceClock *pRefClock = NULL; Obtiene un puntero IReferenceClock (no se muestra).

DWORD dwAdviseToken; HANDLE hSemaphore = CreateSemaphore(NULL, 0, 0x7FFFFFFF, NULL); REFERENCE_TIME rtPeriodTime = 100000000; Intervalo de un segundo REFERENCE_TIME rtNow;

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

pRefClock->Unadvise(dwAdviseToken);

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado strmif.h (incluya Dshow.h)
Library Strmiids.lib

Consulte también

Códigos de error y éxito

IReferenceClock (Interfaz)