c++ - IAsyncReader::SyncRead 方法
问题描述
鉴于签名是:我如何解释返回的“填充我的缓冲区请求” S_FALSE
(“我可以读取您请求的一些但不是全部数据”):
HRESULT SyncRead(LONGLONG llPosition, LONG lLength, BYTE *pBuffer);
具体来说,接口返回时缓冲区的有效字节数是S_FALSE
多少?
我需要知道,对吧?也许我很愚蠢,但我没有看到它。
解决方案
IAsyncReader::SyncRead
是同步读取的捷径,无需考虑数据对齐。优化良好的过滤器通常进行Request
异步WaitForNext
读取,使用媒体样本传输数据,实际数据长度附加到这些样本。在这种快捷方法中,它们似乎使事情变得更容易,但只是丢失了输出参数。
好消息是您可以获取过滤器的源代码(或其近亲,因为自从作为示例发布源代码以来,库存过滤器可能已经发生了一些变化)并通过添加例如IAsyncReader2::SyncReadEx
您返回丢失值的位置来扩展过滤器你需要它。
推荐阅读
- java - 升级到 Hibernate 5 和 Spring 5 后 spring-database xml 配置出现问题
- c# - 如何搜索显示名称中包含一个字母(或几个字母)的用户
- rust - Drop 不能在实现扩展特征的通用结构中使用
- google-chrome - Yubico / Webauthn 和常驻密钥
- javascript - 使用来自 js 客户端的授权码通过用户的 php 获取数据(离线访问)
- java - 不确定如何在 JAVA 中初始化作为另一个对象的对象参数副本的新对象
- python - 如何从列表中打印出差异为2的元素
- javascript - 使用 Node-Forge 的 SHA256 摘要签名
- ibm-mq - 是否可以在 windows 服务器上下载 MQ?
- java - 使用左右按钮滚动回收站视图