Ja, aber immer daran denken was dazu führt, dass es überhaupt zur Referenzzählung kommt.
Interfaceinstanzen sollten IMMER als const übergeben werden. Diese werden dann kein _AddRef oder Release bekommen.
Es ist also problemlos möglich eine Objektreferenz per const an eine Methode zu übergeben ohne dass dir die Instanz unterm Hintern weg gemopst wird.
Außerdem musst du aufpassen wenn du eine 2-seitige Beziehung zwischen 2 Interfaces hast.
Wenn nicht speziell implementiert würden sich beide Referenzen ewig am Leben halten.
Du solltest dir in so einem Fall eine Hierarchie ausdenken: Einer von beiden besitzt den anderen.
Der Owner kann weiterhin eine Referenz auf den anderen halten, währen der andere nur einen Pointer als Feld bekommt.
Du kannst weiterhin eine Property vom Typen des Owners haben, aber das Feld sollte nur ein Pointer sein.
Oh und zurück zur eigentlichen Frage: Damit QueryInterface (und damit Type casts) funktioniert sollten ALLE Interfaces eine
GUID haben. (Ctrl + Shift + G)