Bagikan melalui


Metode CBaseAllocator.SetProperties

[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 ini SetProperties menentukan jumlah buffer yang akan dialokasikan dan ukuran setiap buffer. Metode ini mengimplementasikan metode IMemAllocator::SetProperties .

Sintaks

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

Parameter

pRequest

Arahkan ke struktur ALLOCATOR_PROPERTIES yang berisi persyaratan buffer.

pActual

Penunjuk ke struktur ALLOCATOR_PROPERTIES yang menerima properti buffer aktual.

Nilai kembali

Mengembalikan salah satu nilai HRESULT berikut.

Menampilkan kode Deskripsi
S_OK
Berhasil.
E_POINTER
Argumen penunjuk NULL.
VFW_E_ALREADY_COMMITTED
Tidak dapat mengubah memori yang dialokasikan saat filter aktif.
VFW_E_BADALIGN
Perataan yang tidak valid ditentukan.
VFW_E_BUFFERS_OUTSTANDING
Satu atau beberapa buffer masih aktif.

Keterangan

Metode ini menentukan persyaratan buffer, tetapi tidak mengalokasikan buffer apa pun. Panggil metode CBaseAllocator::Commit untuk mengalokasikan buffer.

Penelepon mengalokasikan dua struktur ALLOCATOR_PROPERTIES. Parameter pRequest berisi persyaratan buffer pemanggil, termasuk jumlah buffer dan ukuran setiap buffer. Ketika metode kembali, parameter pActual berisi properti buffer aktual, seperti yang ditetapkan oleh alokator. Di kelas dasar, dengan asumsi bahwa metode berhasil, properti aktual selalu cocok dengan properti yang diminta. Kelas turunan mungkin mengambil alih perilaku ini.

Alokator tidak boleh diterapkan, dan tidak boleh memiliki buffer yang luar biasa. Di kelas dasar, perataan harus sama dengan 1. Kelas CMemAllocator mengambil alih persyaratan ini.

Persyaratan

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

Lihat juga

Kelas CBaseAllocator