IAsyncReader::Request 方法 (strmif.h)
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
方法 Request
对数据的异步请求进行排队。
语法
HRESULT Request(
IMediaSample *pSample,
[in] DWORD_PTR dwUser
);
参数
pSample
指向调用方提供的媒体示例 的 IMediaSample 接口的指针。
[in] dwUser
指定请求完成时返回的任意值。
返回值
返回 HRESULT 值。 可能的值包括以下值。
返回代码 | 说明 |
---|---|
|
成功。 |
|
缓冲区未正确对齐。 |
|
该示例未标记时间戳。 |
|
引脚正在刷新。 |
|
请求的开始位置已超过文件的末尾。 |
|
内存不足。 |
注解
在调用此方法之前,请从引脚的分配器中检索媒体示例。 使用请求的字节偏移量(包括第一个和最后一个)乘以 10,000,000 的时间戳示例。 字节偏移量相对于流的开始时间。
开始和停止位置应与引脚连接时确定的对齐方式匹配。 否则,方法可能会返回VFW_E_BADALIGN。 如果商定的对齐方式比流的实际对齐方式粗糙,则停止位置可能会超过实际持续时间。 如果是这样,方法会将停止位置向下舍入到实际对齐方式。
尽管从技术上讲,它违反了 COM 规则,但调用方必须在示例上保留未完成的引用计数。 方法 Request
不调用 AddRef 或 Release,因此需要引用计数才能使示例保持活动状态。
方法在请求完成之前返回 。 调用 IAsyncReader::WaitForNext 方法来等待请求。 在请求挂起时,请勿重复使用原始媒体示例。 WaitForNext 方法返回指向原始示例的指针。 如果请求成功,示例将包含请求的数据。 WaitForNext 方法还返回 dwUser 参数中指定的任何值。 调用方可以使用此值来标识示例。
示例
以下示例演示输入引脚的可能帮助程序函数,以将请求排入队列:
C++ |
---|
|
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | strmif.h (包括 Dshow.h) |
Library | Strmiids.lib |