Compartilhar via


CBaseAllocator Class

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Este é um abstrato classe base que implementa os mecanismos básicos para um alocador com um número fixo de fixa-tamanho buffers.

O número de buffers e seu tamanho pode ser alterado usando o CBaseAllocator::SetProperties função membro quando uma entrada pino e um pino saída negociam o alocador entre eles.

A classe fornece a funcionalidade básica para um alocador memória Implementando o IMemAllocator interface.

Ele oferece suporte para gerenciar uma lista de CMediaSample Objetos (ou objetos derivado dessa classe), incluindo suporte para o IMemAllocator::Commit e IMemAllocator::Decommit Métodos e bloqueio de IMemAllocator::GetBuffer método.

Qualquer classe derivado dessa classe (such as CMemAllocator) deve criar CMediaSample objetos, o qual este classe base não.

Um mecanismo de sinalização que emprega um semáforo é usado para que se não houver nenhum amostras, um segmento pode esperar até que existem exemplos ou até que o alocador é decommitted. O m_lFree e m_hSem membro variáveis são usadas para implementar esse simples sinalização mecanismo da seguinte maneira.

Quando um segmento chamadas CBaseAllocator::GetBuffer e existem há exemplos disponível, m_lWaiting é incrementado e o segmento chama a Win32 WaitForSingleObject função no semáforo indicado por m_hSem.

Quando um exemplo é liberado (pela IUnknown::Release método retornando o contagem de referência para zero) ou CBaseAllocator::Decommit é chamado e m_lWaiting é o Win32, diferente de zero ReleaseSemaphore função é chamado no m_hSem Com uma contagem de versão m_lWaiting, e m_lWaiting é redefinir para zero.

Todas as funções membro nessa classe que retornam HRESULT e aceitar um ponteiro como um parâmetro retornar E_POINTER quando passado um ponteiro nulo.

Membros de dados protegido

Membro Descrição

m_bChanged

TRUE se tem alterado os buffers; caso contrário, FALSE.

m_bCommitted

Se TRUE, o alocador está em um estado no qual todos os IMemAllocator::GetBuffer métodos falharem.

O IMemAllocator::SetProperties método é a função membro apenas permitida para operar nesse estado.

m_bDecommitInProgress

Se TRUE, conclui o processo decommit após o retorno de todas as amostras de mídia.

Até que tenha concluído o processo decommit, quaisquer chamadas para IMemAllocator::GetBuffer Retorne E_OUTOFMEMORY.

m_hSem

Sinal de sinalização.

m_lAlignment

Acordo alinhamento da reserva.

m_lAllocated

Número de buffers alocados realmente.

m_lCount

Número de buffers para fornecer estabelecido.

m_lFree

Lista de CMediaSample objetos que estão atualmente livre (livre lista).

m_lPrefix

Prefixo Acordo de reserva (precede valor retornado por IMediaSample::GetPointer).

m_lSize

Tamanho de cada reserva.

m_lWaiting

Contagem de segmentos que estão aguardando amostras.

Funções membro

Função membro Descrição

CBaseAllocator

Constrói um CBaseAllocator WScript.Shell.

NotifySample

Notifica um segmento em espera que é um exemplo disponível na livre lista.

SetWaiting

Incrementos de m_lWaiting membro dados para indicar que um segmento está aguardando um exemplo.

Funções de associados overrideable

Função membro Descrição

Alocação

Aloca memória, instancia CMediaSample Objetos e adiciona-los para o m_lAllocated e m_lFree Membros dados.

Livre

Decommits memória quando a última reserva é liberada.

Métodos IMemAllocator implementada

Método Descrição

Confirmar

Aloca memória por chamado de CBaseAllocator::Alloc função membro, que você deve substituir.

Decommit

Libera todos os recursos e insere o inativo estado.

Bloqueando chamadas para IMemAllocator::GetBuffer deve retornar com um valor de erro e todas as chamadas adicionais para GetBuffer falha quando o inativo no estado.

GetBuffer

Recupera um contêiner para um exemplo.

GetProperties

Determina o tamanho, número e alinhamento de blocos.

ReleaseBuffer

Lançamentos de CMediaSample WScript.Shell.

SetProperties

Especifica um número desejado de blocos, tamanho dos blocos e definir alinhamento bloco. Esse método retorna o real valores para o mesmo.

Métodos INonDelegatingUnknown implementada

Método Descrição

NonDelegatingQueryInterface

Passa sem os ponteiros para as interfaces adicionadas ao derivado classe filtro.

Requisitos

Windows Embedded CE Windows CE 2.12 and later
Windows Mobile Windows Mobile Version 5.0 and later
Note Microsoft DirectShow applications and DirectShow filters have different include file and Library requirements
For more information, see Setting Up the Build Environment