Freigeben über


CBaseAllocator.Alloc-Methode

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde von MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation abgelöst. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code mediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet, wenn möglich. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]

Die Alloc -Methode ordnet Arbeitsspeicher für die Puffer zu.

Syntax

virtual HRESULT Alloc();

Parameter

Diese Methode hat keine Parameter.

Rückgabewert

Gibt einen der folgenden HRESULT-Werte zurück.

Rückgabecode Beschreibung
S_FALSE
Die Pufferanforderungen haben sich nicht geändert.
S_OK
Die Pufferanforderungen haben sich geändert.
VFW_E_SIZENOTSET
Pufferanforderungen wurden nicht festgelegt.

Bemerkungen

Diese Methode wird von der CBaseAllocator::Commit-Methode aufgerufen.

In der Basisklasse ordnet diese Methode keinen Arbeitsspeicher zu. Es wird ein Fehler zurückgegeben, wenn die Pufferanforderungen nicht festgelegt wurden, S_FALSE, wenn sich die Anforderungen nicht geändert haben, und S_OK, wenn sich die Anforderungen geändert haben.

Eine abgeleitete Klasse sollte diese Methode überschreiben, um die tatsächliche Speicherbelegung auszuführen. In der Regel führt die abgeleitete Klasse die folgenden Schritte aus:

  1. Rufen Sie die Basisklassenimplementierung auf, um zu bestimmen, ob der Arbeitsspeicher wirklich zugewiesen werden muss.
  2. Zuordnen von Arbeitsspeicher.
  3. Erstellen Sie CMediaSample-Objekte , die Speicherblöcke aus Schritt 2 enthalten.
  4. Fügen Sie jedes CMediaSample-Objekt der Liste der kostenlosen Beispiele hinzu (CBaseAllocator::m_lFree).

Ein Beispiel finden Sie unter CMemAllocator::Alloc.

Anforderungen

Anforderung Wert
Header
Amfilter.h (streams.h einschließen)
Bibliothek
Strmbase.lib (Einzelhandelsbuilds);
Strmbasd.lib (Debugbuilds)

Siehe auch

CBaseAllocator-Klasse