Enumerator Base Classes
9/8/2008
Um enumerador é uma interface que fornece métodos para atravessando uma lista de elementos. Enumeradores são usados na programação COM e o DirectShow modelo segue o modelo COM em enumerar objetos. O seguinte enumerador classes são fornecidas no biblioteca de classes:
- CEnumPins, que implementa o IEnumPins Interfaces.
- CEnumMediaTypes, que implementa o IEnumMediaTypes interface.
Duas outras interfaces enumerador DirectShow, IEnumFilters e IEnumRegFilters, não são representados por classes de base, pois eles são implementados somente por Gerenciador o filtro de gráfico.
A seguinte ilustração mostra as interfaces para os enumeradores.
O CEnumPins classe cria um enumerador quando o IBaseFilter::EnumPins método for chamado. O enumerador retornado por esse método é um ponteiro para o IEnumPins interface, que é implementado pelo CEnumPins classe.
O CEnumPins funções membro, em seguida, podem ser chamado para recuperar os ponteiros para cada um dos pinos no filtro. Este enumerador realiza isso por chamado de CBaseFilter::GetPin função de membro no filtro.
O filtro deve substituir o classe base CBaseFilter::GetPin função de membro a fornecer o enumerador com o próximo pino na lista cada tempo é chamado.
O CEnumMediaTypes classe cria um enumerador quando o IPin::EnumMediaTypes método for chamado. Armazenar uma lista da mídia de pinos tipos que eles suporte. Durante a negociação do tipo de mídia, um pino geralmente chamadas de EnumMediaTypes método no seu pino conectado, recupera o enumerador e usa-o para selecionar um tipo de mídia.
Ambas essas enumerador classes suporte a Próxima, Ignorar, Redefinir, e Clone métodos familiares para programadores COM.
O chamar enumeradores tipo de mídia o CBasePin::GetMediaType função membro, que deve ser substituída pelo derivado classe pino, para retornar o próximo tipo de mídia em uma lista de tipos de mídia aceitos pelo pino.
Enumeradores operar como segmentos e deve ter sincronizado acessar a lista de tipo de mídia pino. Por esse motivo, as classes que implementar enumeradores herdam, por herança múltipla, o CCritSec classe, que fornece crítico seção gerenciamento.
Para obter mais informações sobre o CCritSec classe, consulte Classes Win32.