Вы правы, что должны вызывать IMFActivate::ShutdownObject
, когда вы закончите, используя объект, который вы активировали. Однако обратите внимание, что рассматриваемый образец создает экземпляр IMFMediaSource, который должен быть возвращен в выходном параметре.
HRESULT CreateVideoDeviceSource(IMFMediaSource **ppSource)
Если бы CreateVideoDeviceSource должен был выполнить ShutdownObject на созданном им IMFMediaSource, а затем передать его вам, он был бы в выключенном состоянии и, следовательно, вероятно, непригоден для использования.
Чтобы ответить на ваш вопрос о том, что вы должны делать по этому поводу, вы, вероятно, сможете воспользоваться pMyMediaSource->Shutdown()
после того, как все закончите с его использованием.
Дополнительная информация: Другое использование IMFActivate в Media Foundation - для разрешения создания экземпляра объекта MF в другом процессе (полезно, потому что сеанс MF Media будет воспроизводить контент с защитой DRM в отдельном процессе); в этом случае MF Media Session действительно будет вызывать IMFActivate::ShutdownObject
для всех IMFActivates, которые вы ему дали.