CoInitialize () / CoUninitialize () вызывает сопряжение

У меня есть однопоточное приложение, которое использует COM-объекты. В начале я в действительности называюCoInitialize(0) дважды - один раз в моем коде и второй раз в коде другой подсистемы приложения. Первый звонок возвращаетсяS_OKвторая возвращаетсяS_FALSE - именно так, как говорит MSDN.

Когда приложение останавливается, оно вызываетCoUninitialize() дважды, но между этими вызовами он пытается вызвать методы некоторых COM-объектов - эти вызовы просто сбой с нарушением доступа, потому что я предполагаю, что COM-объекты завершаются и освобождаются при первом вызовеCoUnitialize(), Если я удаляю дублирующие звонки на /CoInitialize()CoUnitialize() это работает хорошо.

Но почему это? MSDN говорит, что я могу позвонитьCoInitialize() несколько раз и должны только соединить эти вызовы с соответствующим номеромCoUnitialize() звонки.

Почему COM-объекты завершаются при первом вызове.CoUninitialize()

Ответы на вопрос(1)

Ваш ответ на вопрос