IAsyncReader::Metode permintaan (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 Request
mengantre permintaan asinkron untuk data.
Sintaks
HRESULT Request(
IMediaSample *pSample,
[in] DWORD_PTR dwUser
);
Parameter
pSample
Arahkan ke antarmuka IMediaSample dari sampel media yang disediakan oleh pemanggil.
[in] dwUser
Menentukan nilai arbitrer yang dikembalikan saat permintaan selesai.
Mengembalikan nilai
Mengembalikan nilai HRESULT . Nilai yang mungkin termasuk yang berikut ini.
Menampilkan kode | Deskripsi |
---|---|
|
Berhasil. |
|
Buffer tidak diratakan dengan benar. |
|
Sampel tidak diberi stempel waktu. |
|
Pinnya memerah. |
|
Posisi mulai yang diminta melewati akhir file. |
|
Memori tidak cukup. |
Keterangan
Sebelum memanggil metode ini, ambil sampel media dari alokator pin. Stempel waktu sampel dengan offset byte yang Anda minta, inklusif pertama dan terakhir, dikalikan dengan 10.000.000. Offset byte relatif terhadap awal aliran.
Posisi mulai dan berhenti harus cocok dengan perataan yang diputuskan saat pin tersambung. Jika tidak, metode mungkin mengembalikan VFW_E_BADALIGN. Jika penyelarasan yang disepakati lebih kasar daripada keselarasan aliran yang sebenarnya, posisi berhenti mungkin melebihi durasi nyata. Jika demikian, metode membulatkan posisi berhenti ke bawah ke perataan aktual.
Meskipun secara teknis merupakan pelanggaran aturan COM, pemanggil harus meninggalkan jumlah referensi yang luar biasa pada sampel. Metode Request
ini tidak memanggil AddRef atau Release, sehingga jumlah referensi diperlukan untuk menjaga sampel tetap aktif.
Metode ini kembali sebelum permintaan selesai. Panggil metode IAsyncReader::WaitForNext untuk menunggu permintaan. Jangan gunakan kembali sampel media asli saat permintaan tertunda. Metode WaitForNext mengembalikan penunjuk ke sampel asli. Jika permintaan berhasil, sampel berisi data yang diminta. Metode WaitForNext juga mengembalikan nilai apa pun yang ditentukan dalam parameter dwUser . Pemanggil dapat menggunakan nilai ini untuk mengidentifikasi sampel.
Contoh
Contoh berikut menunjukkan kemungkinan fungsi pembantu untuk pin input, untuk mengantre permintaan:
C++ |
---|
|
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | strmif.h (termasuk Dshow.h) |
Pustaka | Strmiids.lib |