2008-03-13

關於使用DirectShow 在 debug mode 產生Protection Error

Ref: http://jewelry-wolf.spaces.live.com/blog/cns!9041D1290EF347B0!279.entry

恩,我先描述一下情况,
我自己开发了一个Soure Filter,从网络上获取多媒体并且本地解码播放
内置使用的是WMV解码器,输出的OutputPin直接连接Render Filter,
原来一切运行正常,
但是最近切换到了2005的平台结果突然出现了问题,
一直报“protection error: win32 debugger detected!"
说什么我有softice之类的东西

现在问题解决了,
其实,上述描述的东西都与解决问题无关,
这个问题的出现一定是在该进程中关于debugger检测的代码
呢么既然原来运行正常,为何现在会出错呢?

很简单,呵呵
既然是directshow,那么就有可能发生其他的filter或恶意或无意的进入你的graph
然后它负责报错

最常见的情况也就是我自己碰到的情况,
这个罪魁祸首的filter就是nero的filter
加入代码查看一下后台的出错源,就是ahead公司的代码
可以发现nero的filter由于把merit值设太高了,
所以常常侵入正常的graph

遇到这种情况不用慌张,首先你与nero肯定可以共存,
因为检测debugger并不会影响无debugger代码的运行
其次如果需要调试那就卸载nero把,

==
問題出在 Nero,
因為 Nero 裡的 filter 的 merit 值設的過高。
移除 Nero 後就可以 debug

No comments:

Post a Comment