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
Library Mfuuid.lib

另请参阅

IMFSourceResolver

源冲突解决程序