IMediaControl::Run 方法 (control.h)

[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayerIMFMediaEngine音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

方法 Run 运行筛选器图中的所有筛选器。 在图形运行时,数据在图形中移动并呈现。

语法

HRESULT Run();

返回值

返回 HRESULT 值。 可能的值包括以下值。

返回代码 说明
S_FALSE
该图正在准备运行,但某些筛选器尚未完成到运行状态的转换。
S_OK
图中的所有筛选器都完成了到运行状态的转换。

备注

如果筛选器图已停止,此方法会在运行前暂停该图。 如果图形已在运行,则方法返回S_OK但不起作用。

该图一直运行,直到应用程序调用 IMediaControl::P auseIMediaControl::Stop 方法。 当播放到达流的末尾时,图形将继续运行,但筛选器不再流式传输数据。 此时,应用程序可以暂停或停止图形。 有关流结束事件的信息,请参阅 IMediaControl::P auseEC_COMPLETE

此方法不查找流的开头。 因此,如果运行图形,暂停它,然后再次运行它,播放将从暂停的位置恢复。 如果在关系图到达流的末尾后运行该图,则不会呈现任何内容。 若要查找图形,请使用 IMediaSeeking 接口。

如果方法返回 S_FALSE,则表示该方法在所有筛选器切换到运行状态之前已返回。 筛选器将在 方法返回后完成转换。 (可选)可以通过使用超时值调用 IMediaControl::GetState 方法来等待转换完成。 不过,这不是必需的。

如果 Run 方法返回错误代码,则表示一个或多个筛选器无法运行。 但是,某些筛选器可能处于运行状态。 在多流图中,整个流可能正在成功播放。 在这种情况下,应用程序通常会断开图形并报告错误。

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 control.h (包括 Dshow.h)
Library Strmiids.lib

另请参阅

错误和成功代码

IMediaControl 接口