Couple of very interesting readings to avoid CComPtr misuse:
"The difference between assignment and attachment with ATL smart pointers"
http://blogs.msdn.com/oldnewthing/archive/2009/11/20/9925918.aspx
"Type safety issue when assigning CComPtr<T> instances"
http://blogs.msdn.com/jaredpar/archive/2009/11/04/type-safety-issue-when-assigning-ccomptr-t-instances.aspx