Condividi tramite


Metodo CBaseAllocator.Alloc

[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 Alloc metodo alloca la memoria per i buffer.

Sintassi

virtual HRESULT Alloc();

Parametri

Questo metodo non presenta parametri.

Valore restituito

Restituisce uno dei valori HRESULT seguenti.

Codice restituito Descrizione
S_FALSE
I requisiti del buffer non sono stati modificati.
S_OK
I requisiti del buffer sono stati modificati.
VFW_E_SIZENOTSET
I requisiti del buffer non sono stati impostati.

Commenti

Questo metodo viene chiamato dal metodo CBaseAllocator::Commit .

Nella classe base questo metodo non alloca memoria. Restituisce un errore se i requisiti del buffer non sono stati impostati, S_FALSE se i requisiti non sono stati modificati e S_OK se i requisiti sono stati modificati.

Una classe derivata deve eseguire l'override di questo metodo per eseguire l'allocazione di memoria effettiva. In genere, la classe derivata eseguirà i passaggi seguenti:

  1. Chiamare l'implementazione della classe di base per determinare se la memoria richiede effettivamente l'allocazione.
  2. Allocare memoria.
  3. Creare oggetti CMediaSample che contengono blocchi di memoria del passaggio 2.
  4. Aggiungere ogni oggetto CMediaSample all'elenco degli esempi gratuiti (CBaseAllocator::m_lFree).

Per un esempio, vedere CMemAllocator::Alloc.

Requisiti

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

Vedi anche

Classe CBaseAllocator