Delphi 调用IMediaControlRun时,如何确定DirectShow筛选器图中的哪个筛选器失败?

Delphi 调用IMediaControlRun时,如何确定DirectShow筛选器图中的哪个筛选器失败?,delphi,filter,directshow,hresult,Delphi,Filter,Directshow,Hresult,我有一个Delphi6应用程序,它使用DSPACK组件库构建一个过滤器图,然后运行它。当我运行过滤器图时,我通过IMediaControl.run()返回失败的HRESULT(使用cePlay控件事件状态)得到一个错误。我知道我可以使用HRESULT错误代码来猜测哪个过滤器失败,但我希望有更好的方法。当IMediaControl.Run(csPlay)通过DirectShow调用或调用序列返回失败的HRESULT代码时,是否有方法找出是哪个筛选器触发了故障?没有办法知道,您只是从某个筛选器转发了

我有一个Delphi6应用程序,它使用DSPACK组件库构建一个过滤器图,然后运行它。当我运行过滤器图时,我通过IMediaControl.run()返回失败的HRESULT(使用cePlay控件事件状态)得到一个错误。我知道我可以使用HRESULT错误代码来猜测哪个过滤器失败,但我希望有更好的方法。当IMediaControl.Run(csPlay)通过DirectShow调用或调用序列返回失败的HRESULT代码时,是否有方法找出是哪个筛选器触发了故障?

没有办法知道,您只是从某个筛选器转发了错误代码。toubleshoot的最佳策略是简化图表并隔离问题。

没有办法知道,您只收到来自某个过滤器的错误代码。toubleshoot的最佳策略是简化图表并隔离问题。

好的,可以。在这种情况下很容易找到。我只是忽略了将输出文件名设置为需要在正常工作之前分配的文件编写器过滤器。但我相信,在其他情况下,调试路径不会这么简单。在这种情况下很容易找到。我只是忽略了将输出文件名设置为需要在正常工作之前分配的文件编写器过滤器。但我相信,在其他情况下,调试路径不会这么简单。