Bagikan melalui


Metode CBaseAllocator.Alloc

[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Tangkapan Audio/Video di Media Foundation. Fitur-fitur tersebut telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan MediaPlayer, IMFMediaEngine dan Audio/Video Capture di Media Foundation alih-alih DirectShow, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

Metode mengalokasikan Alloc memori untuk buffer.

Sintaks

virtual HRESULT Alloc();

Parameter

Metode ini tidak memiliki parameter.

Nilai kembali

Mengembalikan salah satu nilai HRESULT berikut.

Menampilkan kode Deskripsi
S_FALSE
Persyaratan buffer tidak berubah.
S_OK
Persyaratan buffer telah berubah.
VFW_E_SIZENOTSET
Persyaratan buffer tidak ditetapkan.

Keterangan

Metode ini dipanggil oleh metode CBaseAllocator::Commit .

Di kelas dasar, metode ini tidak mengalokasikan memori apa pun. Ini mengembalikan kesalahan jika persyaratan buffer tidak ditetapkan, S_FALSE jika persyaratan tidak berubah, dan S_OK jika persyaratan telah berubah.

Kelas turunan harus mengambil alih metode ini untuk melakukan alokasi memori aktual. Biasanya, kelas turunan akan melakukan langkah-langkah berikut:

  1. Panggil implementasi kelas dasar, untuk menentukan apakah memori benar-benar perlu dialokasikan.
  2. Alokasikan memori.
  3. Buat objek CMediaSample yang berisi potongan memori dari langkah 2.
  4. Tambahkan setiap objek CMediaSample ke daftar sampel gratis (CBaseAllocator::m_lFree).

Misalnya, lihat CMemAllocator::Alloc.

Persyaratan

Persyaratan Nilai
Header
Amfilter.h (termasuk Streams.h)
Pustaka
Strmbase.lib (build ritel);
Strmbasd.lib (build debug)

Lihat juga

Kelas CBaseAllocator