Ваша проблема решается так. Делает отдельный обект. Называете его, к примеру, LockCamera. Когда клиенту нуужно дать контроль над камерой, помещаете информацию о камере в LockCamera и возвращаете пользователю указатель на его интерфейс. Кокда клиенту больше не нужно управление он освобождает ссылку. Ссылка автоматически освобождается если клиент безвременно скончается.
В принципе через такой объект можно организовать и управление камерой.
Скорость создания COM-объектов давольно высокая, к моу же их можно создавать вручную (new), а не чере CoCreateInstance.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.