IAsyncReader::WaitForNext 方法 (strmif.h)
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 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 值。 可能的值包括以下值。
返回代码 | 说明 |
---|---|
|
超时已过期,或者引脚正在刷新。 |
|
引脚正在刷新。 |
|
发生读取错误。 |
|
成功。 |
|
已到达文件末尾;检索的字节数少于请求的字节数。 |
备注
如果 方法成功, 则 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 |