IMFMediaEventGenerator::BeginGetEvent 方法 (mfobjects.h)
開始佇列中下一個事件的異步要求。
語法
HRESULT BeginGetEvent(
[in] IMFAsyncCallback *pCallback,
[in] IUnknown *punkState
);
參數
[in] pCallback
回呼物件的 IMFAsyncCallback 介面指標。 用戶端必須實作這個介面。
[in] punkState
狀態物件的 IUnknown 介面指標,由呼叫端定義。 此參數可以是 Null。 您可以使用這個物件來儲存狀態資訊。 叫用回呼時,物件會傳回給呼叫端。
傳回值
方法會傳回 HRESULT。 可能的值包括 (但不限於) 下表中的這些值。
傳回碼 | 描述 |
---|---|
|
此方法已成功。 |
|
NULL 指標自變數。 |
|
具有相同回呼指標和不同狀態對象的擱置要求。 |
|
有具有不同回呼指標的擱置要求。 |
|
物件已關閉。 |
|
有一個具有相同回呼指標和狀態對象的擱置要求。 |
備註
當有新的事件可用時,事件產生器會呼叫 IMFAsyncCallback::Invoke 方法。 Invoke 方法應該呼叫 IMFMediaEventGenerator::EndGetEvent 以取得 IMFMediaEvent 介面的指標,並使用該介面檢查事件。
呼叫 EndGetEvent 之前,請勿第二次呼叫 BeginGetEvent。 當第一次呼叫仍在擱置中時,對相同物件的其他呼叫將會失敗。 此外,如果異步要求仍在擱置中, IMFMediaEventGenerator::GetEvent 方法就會失敗。
範例
下列程式代碼顯示 BEGINGetEvent 方法的 IMFAsyncCallback::Invoke 一般實作。 Invoke 方法會呼叫 EndGetEvent 以取得事件數據。 然後,它會再次呼叫 BeginGetEvent 以要求另一個事件。
//////////////////////////////////////////////////////////////////////
// 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;
}
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2008 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | mfobjects.h (include Mfidl.h) |
程式庫 | Mfuuid.lib |