IMFSourceResolver::CreateObjectFromURL 方法 (mfidl.h)

從 URL 建立媒體來源或位元組數據流。 這個方法是同步方法。

語法

HRESULT CreateObjectFromURL(
  [in]  LPCWSTR        pwszURL,
  [in]  DWORD          dwFlags,
  [in]  IPropertyStore *pProps,
  [out] MF_OBJECT_TYPE *pObjectType,
  [out] IUnknown       **ppObject
);

參數

[in] pwszURL

包含要解析之 URL 的 Null 終止字串。

[in] dwFlags

一或多個旗標的位 OR。 請參閱 來源解析程式旗標。 請參閱下面的<備註>。

[in] pProps

屬性存放區 之 IPropertyStore 介面的指標。 方法會將屬性存放區傳遞至建立 物件的配置處理程式或位元組數據流處理程式。 處理程式可以使用屬性存放區來設定 物件。 此參數可以是 Null。 如需詳細資訊,請參閱 設定媒體來源

[out] pObjectType

接收 MF_OBJECT_TYPE 列舉的成員,並指定已建立的物件類型。

[out] ppObject

接收物件的 IUnknown 介面指標。 呼叫端必須釋放 介面。

傳回值

方法會傳回 HRESULT。 可能的值包括 (但不限於) 下表中的這些值。

傳回碼 描述
S_OK
此方法已成功。
MF_E_SOURCERESOLVER_MUTUALLY_EXCLUSIVE_FLAGS
dwFlags 參數包含互斥旗標。
MF_E_UNSUPPORTED_SCHEME
不支援URL配置。

備註

dwFlags 參數必須包含MF_RESOLUTION_MEDIASOURCE旗標或MF_RESOLUTION_BYTESTREAM旗標,但不能同時包含兩者。

建議您不要在輸入自變數 dwFlags設定MF_RESOLUTION_WRITE,除非您的案例是必要的。 對於大部分的使用案例,不需要使用寫入功能來建立媒體來源。 建立具有寫入功能的媒體來源,可能會比建立沒有寫入功能的媒體來源成功機率較低。 這是因為在建立具有寫入功能的媒體來源時,URL 所代表的內容可能會有更嚴格的檢查。

針對本機檔案,您可以在 pwszURL 參數中傳遞檔名;不需要配置 file:

注意 這個方法無法從遠端呼叫。
 

範例

//  Create a media source from a URL.
HRESULT CreateMediaSource(PCWSTR sURL, IMFMediaSource **ppSource)
{
    MF_OBJECT_TYPE ObjectType = MF_OBJECT_INVALID;

    IMFSourceResolver* pSourceResolver = NULL;
    IUnknown* pSource = NULL;

    // Create the source resolver.
    HRESULT hr = MFCreateSourceResolver(&pSourceResolver);
    if (FAILED(hr))
    {
        goto done;
    }

    // Use the source resolver to create the media source.

    // Note: For simplicity this sample uses the synchronous method to create 
    // the media source. However, creating a media source can take a noticeable
    // amount of time, especially for a network source. For a more responsive 
    // UI, use the asynchronous BeginCreateObjectFromURL method.

    hr = pSourceResolver->CreateObjectFromURL(
        sURL,                       // URL of the source.
        MF_RESOLUTION_MEDIASOURCE,  // Create a source object.
        NULL,                       // Optional property store.
        &ObjectType,        // Receives the created object type. 
        &pSource            // Receives a pointer to the media source.
        );
    if (FAILED(hr))
    {
        goto done;
    }

    // Get the IMFMediaSource interface from the media source.
    hr = pSource->QueryInterface(IID_PPV_ARGS(ppSource));

done:
    SafeRelease(&pSourceResolver);
    SafeRelease(&pSource);
    return hr;
}

規格需求

需求
最低支援的用戶端 Windows Vista [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2008 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 mfidl.h
程式庫 Mfuuid.lib

另請參閱

IMFSourceResolver

來源解析程式