Classe CAMSchedule
[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.]
A CAMSchedule
classe implementa um agendador para relógios de referência.
Métodos públicos | Descrição |
---|---|
Camschedule | Método de construtor. |
~Camschedule | Método destruidor. Virtual. |
GetAdviseCount | Recupera o número de solicitações de consultoria pendentes. |
GetNextAdviseTime | Recupera a hora da próxima solicitação de aconselhamento. |
AddAdvisePacket | Adiciona uma solicitação de aconselhamento à lista de solicitações pendentes. |
Unadvise | Remove uma solicitação de aconselhamento. |
Aconselhar | Despacha todas as solicitações agendadas para uma hora especificada ou anterior. |
Getevent | Recupera um identificador de evento, que é usado para sinalizar uma alteração na próxima hora de aconselhamento. |
Comentários
Esse objeto auxiliar mantém uma lista de solicitações de aconselhamento para um relógio de referência. A classe CBaseReferenceClock a usa para ajudar a agendar solicitações de aconselhamento. Os relógios usam esse objeto da seguinte maneira:
- O relógio cria um thread de trabalho para lidar com o agendamento.
- O thread de trabalho chama o método CAMSchedule::GetEvent para recuperar um identificador de evento do agendador. Ele aguarda esse evento, inicialmente com um tempo limite infinito.
- Para agendar uma nova solicitação de aconselhamento, o relógio chama o método CAMSchedule::AddAdvisePacket . Uma solicitação de aconselhamento pode ser única ou periódica. O agendador mantém a lista de solicitações em ordem de tempo.
- Se uma solicitação for adicionada à frente da lista, o agendador sinalizará o evento. (A lista está vazia no início, portanto, a primeira solicitação é garantida para sinalizar o evento.)
- Quando o evento é sinalizado, o thread de trabalho chama o método CAMSchedule::Advise , especificando a hora de referência atual. Se alguma solicitação pendente tiver expirado, o agendador as enviará.
- O método Advise retorna a hora da próxima solicitação. O thread de trabalho usa esse valor para calcular um novo valor de tempo limite.
- As etapas 2 6 se repetem indefinidamente.
- Para encerrar o thread de trabalho, o relógio define um sinalizador interno e sinaliza o evento.
Na etapa 2, o evento é sinalizado ou a espera atinge o tempo limite. Se o evento for sinalizado, isso significa que uma nova solicitação foi adicionada à frente da lista. O thread de trabalho deve calcular um novo valor de tempo limite. Por outro lado, se a espera atingir o tempo limite, isso significa que uma solicitação de aconselhamento chegou e deve ser expedida. A chamada para Aconselhar na etapa 5 manipula os dois casos.
Requisitos
Requisito | Valor |
---|---|
parâmetro |
|
Biblioteca |
|