Metodo CBaseAllocator.SetProperties

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Il SetProperties metodo specifica il numero di buffer da allocare e le dimensioni di ogni buffer. Questo metodo implementa il metodo IMemAllocator::SetProperties .

Sintassi

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

Parametri

pRequest

Puntatore a una struttura ALLOCATOR_PROPERTIES che contiene i requisiti del buffer.

pActual

Puntatore a una struttura ALLOCATOR_PROPERTIES che riceve le proprietà effettive del buffer.

Valore restituito

Restituisce uno dei valori HRESULT seguenti.

Codice restituito Descrizione
S_OK
Operazione completata.
E_POINTER
Argomento puntatore NULL.
VFW_E_ALREADY_COMMITTED
Impossibile modificare la memoria allocata mentre il filtro è attivo.
VFW_E_BADALIGN
È stato specificato un allineamento non valido.
VFW_E_BUFFERS_OUTSTANDING
Uno o più buffer sono ancora attivi.

Commenti

Questo metodo specifica i requisiti del buffer, ma non alloca buffer. Chiamare il metodo CBaseAllocator::Commit per allocare i buffer.

Il chiamante alloca due strutture ALLOCATOR_PROPERTIES. Il parametro pRequest contiene i requisiti del buffer del chiamante, inclusi il numero di buffer e le dimensioni di ogni buffer. Quando il metodo viene restituito, il parametro pActual contiene le proprietà effettive del buffer, come impostato dall'allocatore. Nella classe base, supponendo che il metodo abbia esito positivo, le proprietà effettive corrispondono sempre alle proprietà richieste. Le classi derivate potrebbero eseguire l'override di questo comportamento.

L'allocatore non deve essere eseguito il commit e non deve avere buffer in sospeso. Nella classe base l'allineamento deve essere uguale a 1. La classe CMemAllocator esegue l'override di questo requisito.

Requisiti

Requisito Valore
Intestazione
Amfilter.h (include Streams.h)
Libreria
Strmbase.lib (build retail);
Strmbasd.lib (build di debug)

Vedi anche

Classe CBaseAllocator