共用方式為


IMFMediaEngineExtension::BeginCreateObject 方法 (mfmediaengine.h)

開始非同步要求,以建立位元組資料流程或媒體來源。

語法

HRESULT BeginCreateObject(
  [in]           BSTR             bstrURL,
  [in]           IMFByteStream    *pByteStream,
  [in]           MF_OBJECT_TYPE   type,
  [out]          IUnknown         **ppIUnknownCancelCookie,
  [in]           IMFAsyncCallback *pCallback,
  [in, optional] IUnknown         *punkState
);

參數

[in] bstrURL

媒體資源的 URL。

[in] pByteStream

IMFByteStream介面的指標。

如果 類型 參數等於 MF_OBJECT_BYTESTREAM,則此參數為 Null

如果 type 等於 MF_OBJECT_MEDIASOURCE,這個參數會包含位元組資料流程的指標或 為 Null。 如需詳細資訊,請參閱「備註」。

[in] type

MF_OBJECT_TYPE列舉的成員,指定要建立的物件類型。

意義
MF_OBJECT_BYTESTREAM
建立位元組資料流程。 位元組資料流程必須支援 IMFByteStream 介面。
MF_OBJECT_MEDIASOURCE
建立媒體來源。 媒體來源必須支援 IMFMediaSource 介面。

[out] ppIUnknownCancelCookie

接收 IUnknown 介面的指標。 這個指標可用來取消非同步作業,方法是將指標傳遞至 IMFMediaEngineExtension::CancelObjectCreation 方法。

呼叫端必須釋放 介面。 此參數可以是 Null。

[in] pCallback

IMFAsyncCallback介面的指標。 這個介面是用來發出非同步作業完成的訊號。

[in, optional] punkState

呼叫端實作之物件的 IUnknown 介面指標。 您可以使用這個物件來保存回呼的狀態資訊。 叫用回呼時,物件會傳回給呼叫端。 此參數可以是 Null

傳回值

如果此方法成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。

備註

這個方法會要求 物件建立位元組資料流程或媒體來源,視 類型 參數的值而定:

  • 如果 type是MF_OBJECT_BYTESTREAM,方法會為 bstrURL中指定的 URL 建立位元組資料流程。 在此情況下, pByteStream 參數為 Null
  • 如果 type是MF_OBJECT_MEDIASOURCE,方法會使用 pByteStream 參數中指定的位元組資料流程來建立媒體來源。 請注意,在此情況下 ,pByteStream 也可以是 Null
方法會以非同步方式執行。 媒體引擎會呼叫 IMFMediaEngineExtension::EndCreateObject 方法來完成作業。

實作注意事項

媒體引擎擴充功能可用來支援自訂位元組資料流程物件、自訂媒體來源或兩者。 針對位元組資料流程,當 類型 等於 MF_OBJECT_BYTESTREAM時,建立位元組資料流程物件。 針對媒體來源,當類型等於 MF_OBJECT_MEDIASOURCE時,請建立來源。

若要載入 URL,媒體引擎會執行下列步驟:

  1. 嘗試從 URL 建立位元組資料流程。
  2. 如果成功建立位元組資料流程,請嘗試從位元組資料流程建立媒體來源。
  3. 如果無法建立位元組資料流程,請嘗試直接從 URL 建立媒體來源。

在每個步驟中,媒體引擎會在擴充物件上呼叫 IMFMediaEngineExtension::BeginCreateObject 。 如果 BeginCreateObject 方法失敗,媒體引擎會嘗試 來源解析程式

BeginCreateObject 方法中,您可以選擇處理下列任一案例:

  • 類型參數MF_OBJECT_BYTESTREAM。 從 URL 建立位元組資料流程。
  • 類型參數MF_OBJECT_MEDIASOURCE而 pByteStream會指向位元組資料流程。 使用位元組資料流程來建立媒體來源。
  • 類型參數MF_OBJECT_MEDIASOURCEpByteStreamNull。 從 URL 建立媒體來源。

針對您未處理的任何情況,傳回失敗碼。

範例:

  • 若要支援自訂媒體格式,請實作媒體來源。 如果媒體來源不需要任何特殊的位元組資料流程實作,請在類型為 MF_OBJECT_MEDIASOURCEpByteStream為非Null時建立媒體來源。 在此案例中將會使用標準的 Microsoft Media Foundation 位元組資料流程實作。
  • 若要支援自訂 URL 配置,請處理類型MF_OBJECT_BYTESTREAM的情況,並傳回能夠讀取 URL 的位元組資料流程物件。

如果 BeginCreateObject 方法成功,應該以非同步方式執行作業。 當作業完成時,請在pCallback中指定的回呼介面上呼叫IMFAsyncCallback::Invoke方法。 媒體引擎會呼叫 IMFMediaEngineExtension::EndCreateObject來完成作業。

需求

   
最低支援的用戶端 Windows 8 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2012 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 mfmediaengine.h

另請參閱

IMFMediaEngineExtension