IMFMediaEventGenerator::BeginGetEvent method (mfobjects.h)
Memulai permintaan asinkron untuk peristiwa berikutnya dalam antrean.
Sintaks
HRESULT BeginGetEvent(
[in] IMFAsyncCallback *pCallback,
[in] IUnknown *punkState
);
Parameter
[in] pCallback
Arahkan ke antarmuka IMFAsyncCallback dari objek panggilan balik. Klien harus mengimplementasikan antarmuka ini.
[in] punkState
Penunjuk ke antarmuka IUnknown dari objek status, yang ditentukan oleh pemanggil. Parameter ini bisa NULL. Anda dapat menggunakan objek ini untuk menyimpan informasi status. Objek dikembalikan ke pemanggil ketika panggilan balik dipanggil.
Nilai kembali
Metode mengembalikan HRESULT. Nilai yang mungkin termasuk, tetapi tidak terbatas pada, yang ada dalam tabel berikut.
Menampilkan kode | Deskripsi |
---|---|
|
Metode berhasil. |
|
Argumen pointer NULL. |
|
Ada permintaan tertunda dengan penunjuk panggilan balik yang sama dan objek status yang berbeda. |
|
Ada permintaan tertunda dengan penunjuk panggilan balik yang berbeda. |
|
Objek dimatikan. |
|
Ada permintaan tertunda dengan penunjuk panggilan balik dan objek status yang sama. |
Keterangan
Saat peristiwa baru tersedia, generator peristiwa memanggil metode IMFAsyncCallback::Invoke . Metode Panggil harus memanggil IMFMediaEventGenerator::EndGetEvent untuk mendapatkan penunjuk ke antarmuka IMFMediaEvent , dan menggunakan antarmuka tersebut untuk memeriksa peristiwa.
Jangan panggil BeginGetEvent untuk kedua kalinya sebelum memanggil EndGetEvent. Saat panggilan pertama masih tertunda, panggilan tambahan ke objek yang sama akan gagal. Selain itu, metode IMFMediaEventGenerator::GetEvent gagal jika permintaan asinkron masih tertunda.
Contoh
Kode berikut menunjukkan implementasi khas IMFAsyncCallback::Invoke untuk metode BeginGetEvent . Metode Panggil memanggil EndGetEvent untuk mendapatkan data peristiwa. Kemudian memanggil BeginGetEvent lagi untuk meminta peristiwa lain.
//////////////////////////////////////////////////////////////////////
// Name: CEventHandler::Invoke
// Callback for asynchronous BeginGetEvent method.
//
// pAsyncResult: Pointer to the result.
//
// This code example assumes that CEventHandler is a class that
// implements the IMFAsyncCallback interface.
///////////////////////////////////////////////////////////////////////
HRESULT CEventHandler::Invoke(IMFAsyncResult *pAsyncResult)
{
HRESULT hr = S_OK;
IMFMediaEvent* pEvent = NULL;
MediaEventType meType = MEUnknown;
BOOL fGetAnotherEvent = TRUE;
HRESULT hrStatus = S_OK;
// Get the event from the event queue.
// Assume that m_pEventGenerator is a valid pointer to the
// event generator's IMFMediaEventGenerator interface.
hr = m_pEventGenerator->EndGetEvent(pAsyncResult, &pEvent);
// Get the event type.
if (SUCCEEDED(hr))
{
hr = pEvent->GetType(&meType);
}
// Get the event status. If the operation that triggered the event
// did not succeed, the status is a failure code.
if (SUCCEEDED(hr))
{
hr = pEvent->GetStatus(&hrStatus);
}
if (SUCCEEDED(hr))
{
// TODO: Handle the event.
}
// If not finished, request another event.
// Pass in a pointer to this instance of the application's
// CEventHandler class, which implements the callback.
if (fGetAnotherEvent)
{
hr = m_pEventGenerator->BeginGetEvent(this, NULL);
}
SAFE_RELEASE(pEvent);
return hr;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows Vista [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows Server 2008 [aplikasi desktop | Aplikasi UWP] |
Target Platform | Windows |
Header | mfobjects.h (termasuk Mfidl.h) |
Pustaka | Mfuuid.lib |
Lihat juga
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