Ich denke, ich würde hier komplett anders vorgehen. Deine Komponente
TAudioVolume
muss die Interfaces
IAudioSessionEvents, IMMNotificationClient, IAudioSessionNotification, IAudioEndpointVolumeCallback
doch gar nicht öffentlich implementieren. Du könntest dafür eine weitere (private) Klasse in der gleichen
Unit anlegen und Befehle von
TAudioVolume
an eine Instanz davon weiterleiten bzw. die Callbacks von der Instanz zur
TAudioVolume
Komponente. Also eine Art Proxy sozusagen. Von dem Proxy erstellt du dann pro
TAudioVolume
Instanz ebenfalls eine Instanz und gibst diese im Destructor frei (
TAudioVolume
besitzt also die Proxy Instanz).
TAudioVolume
selbst kannst du dann z.B. einfach von
TObject
ableiten.