Partilhar via


Método CBaseAllocator.Alloc

[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 Alloc método aloca memória para os buffers.

Sintaxe

virtual HRESULT Alloc();

Parâmetros

Esse método não tem parâmetros.

Retornar valor

Retorna um dos seguintes valores HRESULT .

Código de retorno Descrição
S_FALSE
Os requisitos de buffer não foram alterados.
S_OK
Os requisitos de buffer foram alterados.
VFW_E_SIZENOTSET
Os requisitos de buffer não foram definidos.

Comentários

Esse método é chamado pelo método CBaseAllocator::Commit .

Na classe base, esse método não aloca nenhuma memória. Ele retornará um erro se os requisitos de buffer não tiverem sido definidos, S_FALSE se os requisitos não tiverem sido alterados e S_OK se os requisitos tiverem sido alterados.

Uma classe derivada deve substituir esse método para executar a alocação de memória real. Normalmente, a classe derivada executará as seguintes etapas:

  1. Chame a implementação da classe base para determinar se a memória realmente precisa ser alocada.
  2. Alocar memória.
  3. Crie objetos CMediaSample que contêm partes de memória da etapa 2.
  4. Adicione cada objeto CMediaSample à lista de exemplos gratuitos (CBaseAllocator::m_lFree).

Para obter um exemplo, consulte CMemAllocator::Alloc.

Requisitos

Requisito Valor
parâmetro
Amfilter.h (inclua Streams.h)
Biblioteca
Strmbase.lib (builds de varejo);
Strmbasd.lib (builds de depuração)

Confira também

Classe CBaseAllocator