Когда реализовать IUnknown в классе

Я пишу класс C ++, который использует по крайней мере один интерфейс COM из Windows API. Очевидно, что при использовании этих объектов внутри класса мне нужно правильно вызывать AddRef() а также Release(),

Мой вопрос … мне нужно дополнительно реализовать IUnknown в самом классе C ++? Насколько я понимаю, мне нужно было бы сделать это только в том случае, если интерфейс, который я использовал, выполнял асинхронные операции или обратные вызовы. В этом случае вам нужно убедиться, что сам класс C ++ все еще «жив», когда асинхронная операция или обратный вызов завершены. это правильно?

Для разъяснения (и согласно комментарию Ганса) конкретный интерфейс, который меня интересует, IMFSourceReader(Windows Media Foundation). Этот интерфейс по умолчанию работает в синхронном режиме. Итак, еще раз, если я правильно понимаю, мне нужно будет только реализовать IUnknown в моем классе C ++, если я выбрал вместо этого использовать его в асинхронном режиме. В противном случае звонки IMFSourceReader->AddRef() или же IMFSourceReader->Release было бы достаточно.

Если, однако, я решил использовать IMFSourceReader в асинхронном режиме, который требует IMFSourceReaderCallback интерфейс, который сам по себе наследует IUnknown, В этом случае я должен был бы реализовать это в классе.

Правильно ли мое понимание? Я все еще на начальном этапе написания реализации, поэтому у меня нет примера кода, которым можно поделиться. На данный момент я просто пытаюсь понять основную структуру моего класса.

-1

Решение

Вы реализуете IUnknown только в том случае, если вы сами реализуете COM-объект, просто использование COM не требует реализации IUnknown.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]