Leite dein Interface am besten von IUnknown ab, dann wird
COM benutzt. Das sollte korrekt funktionieren.
Benutzt du die Referenzzählung auch zur Freigabe der Objekte? Wenn nein, ist dein Grundkonzept bedenklich, da du nie sicher sein kannst, dass das Objekt hinter dem Interface noch existiert, wenn du es benutzt. Denn wenn du parallel das Objekt nutzt und ggf. freigibst, bekommen gespeicherte Referenzen davon nichts mit...
Ich denke hier wird der Segen des automatischen Freigebens von Interfaces einfach zum Fluch, woher soll der Compiler wissen dass da nochmals jemand drauf zugreift, wenn der Zugriff aus einer
DLL erfolgt und im Hauptprogramm keiner mehr Interesse dafür zu haben scheint.
Da das über _AddRef und _Release gemacht wird, sollte das problemlos gehen, vorausgesetzt diese Aufrufe kommen auch korrekt an. Aber man darf halt das dahinterliegende Objekt nicht ohne die Referenzzählung zu beachten freigeben.