Correct. The call to QueryInterface() will AddRef() g_pControl for you. So now when you no longer need it, you call g_pControl->Release(). AddRef() and Release() must be paired, so it gets confusing as to who calls which at which time. Basically though, output parameters are always AddRef()'d...