IAsyncReader::WaitForNext 方法 (strmif.h)

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

方法 WaitForNext 等待下一个挂起的读取请求完成。

语法

HRESULT WaitForNext(
  [in]  DWORD        dwTimeout,
  [out] IMediaSample **ppSample,
  [out] DWORD_PTR    *pdwUser
);

参数

[in] dwTimeout

指定超时(以毫秒为单位)。 使用值 INFINITE 无限期等待

[out] ppSample

接收 IMediaSample 接口指针的变量的地址。

[out] pdwUser

指向一个变量的指针,该变量接收在 IAsyncReader::Request 方法中指定的 dwUser 参数的值。

返回值

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

返回代码 说明
VFW_E_TIMEOUT
超时已过期,或者引脚正在刷新。
VFW_E_WRONG_STATE
引脚正在刷新。
E_FAIL
发生读取错误。
S_OK
成功。
S_FALSE
已到达文件末尾;检索的字节数少于请求的字节数。

备注

如果 方法成功, 则 ppSample 参数包含指向媒体示例的指针,其缓冲区保存请求的数据。 调用 IMediaSample::GetTime 方法并将结果除以 10,000,000,000,以确定开始和停止字节。 样本可能会按顺序返回。 处理完数据后释放示例。

如果引脚正在刷新,方法将失败。 但是,它可能会在 ppSample 中返回一个空样本。 如果 *ppSample 为非 NULL,请释放示例并丢弃它。 有关详细信息,请参阅 IAsyncReader::BeginFlush

如果发生读取错误,源筛选器会将错误事件发送到 Filter Graph 管理器;调用方不必发出错误信号。

要求

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

另请参阅

错误和成功代码

IAsyncReader 接口