Compartilhar via


Método CBaseAllocator.SetProperties

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in 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 Audio/Video Capture in 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 SetProperties método especifica o número de buffers a serem alocados e o tamanho de cada buffer. Esse método implementa o método IMemAllocator::SetProperties .

Sintaxe

HRESULT SetProperties(
   ALLOCATOR_PROPERTIES *pRequest,
   ALLOCATOR_PROPERTIES *pActual
);

Parâmetros

Prequest

Ponteiro para uma estrutura ALLOCATOR_PROPERTIES que contém os requisitos de buffer.

Pactual

Ponteiro para uma estrutura ALLOCATOR_PROPERTIES que recebe as propriedades reais do buffer.

Retornar valor

Retorna um dos seguintes valores HRESULT .

Código de retorno Descrição
S_OK
Êxito.
E_POINTER
Argumento de ponteiro NULL.
VFW_E_ALREADY_COMMITTED
Não é possível alterar a memória alocada enquanto o filtro estiver ativo.
VFW_E_BADALIGN
Um alinhamento inválido foi especificado.
VFW_E_BUFFERS_OUTSTANDING
Um ou mais buffers ainda estão ativos.

Comentários

Esse método especifica os requisitos de buffer, mas não aloca nenhum buffer. Chame o método CBaseAllocator::Commit para alocar buffers.

O chamador aloca duas estruturas ALLOCATOR_PROPERTIES. O parâmetro pRequest contém os requisitos de buffer do chamador, incluindo o número de buffers e o tamanho de cada buffer. Quando o método retorna, o parâmetro pActual contém as propriedades reais do buffer, conforme definido pelo alocador. Na classe base, supondo que o método seja bem-sucedido, as propriedades reais sempre correspondem às propriedades solicitadas. Classes derivadas podem substituir esse comportamento.

O alocador não deve ser confirmado e não deve ter buffers pendentes. Na classe base, o alinhamento deve ser igual a 1. A classe CMemAllocator substitui esse requisito.

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