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