Nikolay Sivov (@nsivov) commented about dlls/combase/apartment.c:
- EnterCriticalSection(&apt_cs);
- if (apt && !mta)
apt_mt = mta = apartment_construct(COINIT_MULTITHREADED);- else if ((apt_mt = mta))
apartment_addref(mta);- LeaveCriticalSection(&apt_cs);
- if (!apt_mt)
- {
ERR("Apartment not initialized.\n");return CO_E_NOTINITIALIZED;- }
- data->implicit_mta = apt_mt;
- return S_OK;
+}
There is apartment_increment_mta_usage(). Could it be used here?