IMFSchemeHandler::BeginCreateObject 方法 (mfidl.h)
开始一个异步请求,以从 URL 创建对象。
当 源解析程序 从 URL 创建媒体源时,它会将请求传递给方案处理程序。 方案处理程序可能直接从 URL 创建媒体源,也可能返回字节流。 如果返回字节流,则源解析程序使用字节流处理程序从字节流创建媒体源。
语法
HRESULT BeginCreateObject(
[in] LPCWSTR pwszURL,
[in] DWORD dwFlags,
[in] IPropertyStore *pProps,
[out] IUnknown **ppIUnknownCancelCookie,
[in] IMFAsyncCallback *pCallback,
[in] IUnknown *punkState
);
parameters
[in] pwszURL
一个以 null 结尾的字符串,其中包含要解析的 URL。
[in] dwFlags
一个或多个标志的按位 OR 。 请参阅 源冲突解决程序标志。
[in] pProps
指向属性存储的 IPropertyStore 接口的指针。 方案处理程序可以使用此属性存储来配置 对象。 此参数可以为 NULL。 有关详细信息,请参阅 配置媒体源。
[out] ppIUnknownCancelCookie
接收 IUnknown 指针或值 NULL。 如果值不为 NULL,可以通过将此指针传递到 IMFSchemeHandler::CancelObjectCreation 方法来取消异步操作。 调用方必须释放接口。 此参数可以为 NULL,在这种情况下, IUnknown 指针不会返回到调用方。
[in] pCallback
指向回调对象的 IMFAsyncCallback 接口的指针。 调用方必须实现此接口。
[in] punkState
指向由调用方定义的状态对象的 IUnknown 接口的指针。 此参数可以为 NULL。 可以使用此对象来保存状态信息。 调用回调时,对象将返回到调用方。
返回值
该方法返回 HRESULT。 可能的值包括(但并不限于)下表中的项。
返回代码 | 说明 |
---|---|
|
方法成功。 |
|
无法打开具有请求访问权限的 URL, (读取或写入) 。 |
|
不支持的字节流类型。 |
注解
dwFlags 参数必须包含MF_RESOLUTION_MEDIASOURCE标志或MF_RESOLUTION_BYTESTREAM标志。 如果设置了 MF_RESOLUTION_MEDIASOURCE 标志,则方案处理程序可能直接从 URL 创建媒体源,也可以创建字节流。 对象的类型在 IMFSchemeHandler::EndCreateObject 方法的 pObjectType 参数中返回。 如果方案处理程序返回字节流,则源解析程序会将字节流传递给字节流处理程序,该处理程序将从字节流创建媒体源。
如果设置了 MF_RESOLUTION_BYTESTREAM 标志,则方案处理程序将尝试从 URL 创建字节流。 但是,如果方案处理程序旨在直接创建媒体源而不是字节流,则 该方法将失败。
下表总结了这两个标志在传递给此方法时的行为:
标志 | 已创建对象 |
---|---|
MF_RESOLUTION_MEDIASOURCE | 媒体源或字节流 |
MF_RESOLUTION_BYTESTREAM | 字节流 |
可以将MF_RESOLUTION_MEDIASOURCE和MF_RESOLUTION_BYTESTREAM标志组合在一起,但在本例中是多余的。
操作完成后,方案处理程序将调用 IMFAsyncCallback::Invoke 方法。 Invoke 方法应调用 IMFSchemeHandler::EndCreateObject 以获取指向所创建对象的指针。
要求
最低受支持的客户端 | Windows Vista [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2008 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | mfidl.h |
Library | Mfuuid.lib |