Directshow MediaEvent GetEvent ErrorAbort问题

时间:2011-12-16 17:05:29

标签: directshow

遇到一个奇怪的问题。看下面的代码:

                    while (!tokenSource.IsCancellationRequested)
                    {
                        System.Threading.Thread.Sleep(500);

                        while (mediaEvent.GetEvent(out ev, out p1, out p2, 0) == 0)
                        {
                            if (ev == EventCode.Complete || ev == EventCode.UserAbort)
                            {
                                tokenSource.Cancel();
                            }
                            else if (ev == EventCode.ErrorAbort)
                            {
                                Logger.Log(LogType.DEBUG, string.Format("An error occured: HRESULT={0:X}", p1));
                                tokenSource.Cancel();
                            }

                            mediaEvent.FreeEventParams(ev, p1, p2);
                        }
                    }

偶尔(比平常更多),ev会在第一次启动时等于eventcode.errorabort然而真正让我失望的是p1(这是一个HRESULT)返回0 ...意味着S_OK。

根据我的理解,我收到了一个成功的错误......这不是故意的。

是否有人对可能导致成功错误的内容有任何想法...图表启动并运行良好,一切都成功,直到它进入while循环并最终返回成功的errorabort。

思想?

1 个答案:

答案 0 :(得分:0)

几年前我遇到了同样的问题。 试图找出协议并握手以下结果(ev):

Error while synchronising data and player. = 0x40 
?    = 0x41 
?    = 0x42 
Moment, trying to connect...    = 0x43 
No internet access available or connection closed.    = 0x44 
The server is not responding or is not online.    = 0x45 
Moment, receiving data...    = 0x46 
?    = 0x47 
Connected with server.    = 0x48 
?    = 0x49 

到目前为止,我试图在nserror.mc / _NSERROR_H中找到这些事件代码,但无法弄清楚这些结果应记录在哪个标题中。