IGraphConfig::Connection 方法 (strmif.h)
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
方法 Reconnect
在两个引脚之间执行动态重新连接。
语法
HRESULT Reconnect(
[in] IPin *pOutputPin,
[in] IPin *pInputPin,
[in] const AM_MEDIA_TYPE *pmtFirstConnection,
[in] IBaseFilter *pUsingFilter,
[in] HANDLE hAbortEvent,
[in] DWORD dwFlags
);
参数
[in] pOutputPin
指向输出引脚 的 IPin 接口的指针。 可以为 NULL,在这种情况下 ,pInputPin 不得为 NULL。
[in] pInputPin
将 IPin 接口指针指向输入引脚。 可以为 NULL,在这种情况下 ,pOutputPin 不得为 NULL。
[in] pmtFirstConnection
指向 AM_MEDIA_TYPE 结构的指针,该结构指定在重新连接期间建立的第一个引脚连接的媒体类型。 如果此参数为 NULL,则第一个连接可以具有任何媒体类型。
[in] pUsingFilter
指向在重新连接中使用的可选筛选器的指针。 筛选器必须已位于图形中。 可以为 NULL。
[in] hAbortEvent
事件的句柄。 如果调用方是在其数据处理线程之一上调用的筛选器,则此参数应是事件句柄,该事件将在筛选器进入停止状态时发出信号。 否则,此参数可以为 NULL。 有关详细信息,请参阅“备注”。
[in] dwFlags
AM_GRAPH_CONFIG_RECONNECT_FLAGS 枚举中的标志组合,指定如何执行重新连接。
返回值
如果成功,则返回S_OK。 否则,返回一个错误代码,可能是以下值之一或未列出的其他值之一。
返回代码 | 说明 |
---|---|
|
无效的参数。 (例如, pInputPin 和 pOutputPin 均为 NULL.) |
|
输入引脚不支持 IPinConnection。 |
|
无法连接筛选器。 |
|
筛选器的状态已更改。 无法完成操作。 |
注解
如果仅指定一个图钉,方法将搜索另一个图钉。 但是,默认情况下,如果搜索到达通过 IFilterGraph::AddFilter 方法添加到图形的筛选器,则搜索将失败。 若要替代此行为,请调用 IGraphConfig::SetFilterFlags 并在筛选器上设置AM_FILTER_FLAGS_REMOVABLE标志。
重新连接过程涉及几个步骤,其中大多数步骤在此方法中处理:
- 首先,在调用 方法之前,请确保阻止正在重新配置的路径上的数据流。 应用程序应调用 IPinFlowControl::Block 方法来执行此操作。 如果调用方是筛选器而不是应用程序,则筛选器可能可在内部控制数据流。
- 指定的输出和输入引脚定义重新连接起点和终点。 输入引脚必须支持 IPinConnection 接口。 如果通过) 传递 NULL 参数将其中一个引脚保留为未指定 (,则 方法将搜索筛选器图以查找要重新连接的候选引脚。 (若要查找输入引脚,它会从输出引脚中搜索下游;若要查找输出引脚,请从输入引脚搜索上游。)
- 方法通过筛选图推送任何挂起的数据, (通过内部调用 IGraphConfig::P ushThroughData) 。
- 如果已指定要插入到图形中的筛选器,方法会将起始输出引脚连接到筛选器的输入引脚,并将筛选器的输出引脚连接到最终输入引脚。 如果未指定筛选器,方法只需将输出引脚连接到输入引脚。 在任一情况下,方法都插入完成连接所需的任何转换筛选器。 (但是,可以通过设置适当的标志来替代此行为;有关详细信息,请参阅 dwFlags parameter.)
- 最后, 方法将新筛选器置于运行状态。 由调用方来重启数据流。 应用程序可以通过调用不带标志的 IPinFlowControl::Block 来执行此操作。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | strmif.h (包括 Dshow.h) |
Library | Strmiids.lib |