IMediaSeeking::CheckCapabilities 方法 (strmif.h)

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

CheckCapabilities 方法查询流是否具有指定的查找功能。

语法

HRESULT CheckCapabilities(
  [in, out] DWORD *pCapabilities
);

参数

[in, out] pCapabilities

输入时,是指向变量的指针,该变量包含一个或多个AM_SEEKING_SEEKING_CAPABILITIES属性的按位 OR。 方法返回时,值指示哪些属性可用。

返回值

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

返回代码 说明
S_FALSE
pCapabilities 中的一些(但不是所有)功能都存在。
S_OK
pCapabilities 中的所有功能都存在。
E_FAIL
pCapabilities 中不存在任何功能。
E_POINTER
NULL 指针参数。

注解

如果只对一些特定功能感兴趣,则调用此方法比调用 IMediaSeeking::GetCapabilities 更高效,后者会检查所有流的查找功能。

若要调用此方法,请声明一个 DWORD 变量,并将值设置为要测试的AM_SEEKING_SEEKING_CAPABILITIES标志的按位 OR 组合。 在 pCapabilities 参数中传递此值的地址。 方法返回时, pCapabilities 包含原始位的子集,指示存在哪些功能。 返回值指示是否存在某些、无或所有请求的功能。

下面的代码示例演示如何确定流是否支持向前查找、后向查找和绝对查找。

C++
为要检查的功能设置标志。

DWORD dwCaps = AM_SEEKING_CanSeekAbsolute |AM_SEEKING_CanSeekForwards |AM_SEEKING_CanSeekBackwards;

HRESULT hr = pMediaSeeking-CheckCapabilities> (&dwCaps) ;如果 (FAILED (小时) ) { // 流无法查找。 } else if (hr == S_OK) {
// The stream can seek forward, backward, and to an absolute position. } else if (hr == S_FALSE) // The stream has some of the capabilities. { if (dwCaps & AM_SEEKING_CanSeekAbsolute) { // The stream can seek to an absolute position. } if (dwCaps & AM_SEEKING_CanSeekForwards) { // The stream can seek forward. } if (dwCaps & AM_SEEKING_CanSeekBackwards) { // The stream can seek backward. } }

要求

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

另请参阅

错误和成功代码

IMediaSeeking 接口