IVMRSurfaceAllocator::AllocateSurface method (strmif.h)
[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Pengambilan 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 Pengambilan Audio/Video 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 AllocateSurface
mengalokasikan permukaan DirectDraw.
Sintaks
HRESULT AllocateSurface(
[in] DWORD_PTR dwUserID,
[in] VMRALLOCATIONINFO *lpAllocInfo,
[in] DWORD *lpdwActualBuffers,
[out] LPDIRECTDRAWSURFACE7 *lplpSurface
);
Parameter
[in] dwUserID
Cookie DWORD_PTR yang ditentukan aplikasi yang secara unik mengidentifikasi instans VMR ini untuk digunakan dalam skenario ketika satu instans penyaji alokator digunakan dengan beberapa instans VMR.
[in] lpAllocInfo
Menentukan struktur VMRALLOCATIONINFO . Lihat Keterangan.
[in] lpdwActualBuffers
[out] Pada input, parameter ini digunakan untuk meminta jumlah buffer yang diinginkan. Pada output, ia menerima jumlah buffer aktual yang dibuat.
[out] lplpSurface
Alamat pointer yang menerima permukaan Direct3D.
Nilai kembali
Jika metode berhasil, metode akan mengembalikan S_OK. Jika gagal, kode kesalahan akan dikembalikan.
Menampilkan kode | Deskripsi |
---|---|
|
Salah satu pointer tidak valid. |
|
Dalam dwFlags, AMAP_3D_TARGET dikombinasikan dengan AMAP_FORCE_SYSMEM atau AMAP_ALLOW_SYSMEM. |
|
Satu atau beberapa anggota struktur BITMAPINFOHEADER yang ditentukan oleh lpAllocInfo-lpHdr> salah. |
Keterangan
Sebelum memanggil AllocateSurface secara eksplisit, aplikasi klien harus memanggil IVMRSurfaceAllocator::FreeSurface untuk memastikan bahwa buffer depan permukaan decoding DirectDraw ADALAH NULL. Jika bukan NULL pada saat aplikasi memanggil AllocateSurface, versi debug quartz.dll akan menyebabkan pernyataan.
Saat menerapkan metode ini dalam alokator-presenter kustom, Anda harus memeriksa nilai lpAllocInfo-lpHdr-biBitCount>>. Jika biBitCount adalah nol, maka Anda harus mengaturnya ke kedalaman piksel untuk tampilan saat ini. Jika BiBitCount dibiarkan nol, alokasi permukaan akan gagal dan VMR baru (default) akan dibuat.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows XP dengan SP1 [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2003 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | strmif.h (termasuk Dshow.h) |
Pustaka | Strmiids.lib |
Lihat juga
Kode Kesalahan dan Keberhasilan
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk