Share via


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

[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo na Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

O AdvisePeriodic método cria uma solicitação de aconselhamento periódica.

Sintaxe

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

Parâmetros

[in] startTime

Hora da primeira notificação, em unidades de 100 nanossegundos. Deve ser maior que zero e menor que MAX_TIME.

[in] periodTime

Tempo entre notificações, em unidades de 100 nanossegundos. Deve ser maior que zero.

[in] hSemaphore

Manipule para um semáforo, criado pelo chamador.

[out] pdwAdviseCookie

Ponteiro para uma variável que recebe um identificador para a solicitação de aconselhamento.

Retornar valor

Retorna um valor HRESULT . Os possíveis valores incluem os seguintes.

Código de retorno Descrição
S_OK
Êxito.
E_INVALIDARG
Valores de tempo inválidos.
E_OUTOFMEMORY
Falha.
E_POINTER
Argumento de ponteiro NULL.

Comentários

Em cada hora de notificação, o relógio libera o semáforo especificado no parâmetro hSemaphore . Quando nenhuma notificação adicional for necessária, chame IReferenceClock::Unadvise e passe o valor pdwAdviseToken retornado dessa chamada.

O exemplo de código a seguir cria uma solicitação de aconselhamento que sinaliza cinco segundos a partir do momento em que ela é criada e novamente a cada segundo depois disso:

C++
IReferenceClock *pRefClock = NULL; Obtenha um ponteiro IReferenceClock (não mostrado).

DWORD dwAdviseToken; HANDLE hSemaphore = CreateSemaphore(NULL, 0, 0x7FFFFFFF, NULL); REFERENCE_TIME rtPeriodTime = 100000000; Um intervalo de um segundo REFERENCE_TIME rtNow;

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

pRefClock->Unadvise(dwAdviseToken);

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho strmif.h (inclua Dshow.h)
Biblioteca Strmiids.lib

Confira também

Códigos de erro e êxito

IReferenceClock Interface