Для 98% кода DirectShow вы не должны никогда видеть вызов AddRef или Release.Всегда используйте CComPtr <>.Есть несколько незначительных исключений из этого правила.
Также важно понимать блокировку, как CCritSec и CAutoLock;еще раз, я бы избегал ручной блокировки экземпляров CCritSec, потому что это хороший способ заблокировать приложение.
Кроме того, этот код может быть очень удобен:
#include <dxerr9.h>
...
HRESULT hr = S_OK;
... something goes wrong ...
CString err(::DXGetErrorString9(hr));
err += ::DXGetErrorDescription9(hr);
Наконец, убедитесь, что вы используете событие DShow.Всякая полезная информация приходит по событиям из графика DShow, и удивительно, как много приложений не реализовали это (или неправильно).
Некоторое время назад, Я написал это, который я как бы собрал вместе в ловушку при работе с DShow.К сожалению, я знаю эти подводные камни, потому что я облажался почти всеми этими способами.