/* added -> */
 public void Dispose()
 {
     if (_AudioSessionControl != null)
     {
         if (_audioSessionEvents != null)
         {
             Marshal.ThrowExceptionForHR(_AudioSessionControl.UnregisterAudioSessionNotification(_audioSessionEvents));
         }
         Marshal.ReleaseComObject(_AudioSessionControl);
         _audioSessionEvents = null;
     }
 }
        internal AudioSessionControl(IAudioSessionControl2 realAudioSessionControl)
        {
            IAudioMeterInformation _meters = realAudioSessionControl as IAudioMeterInformation;
            ISimpleAudioVolume _volume = realAudioSessionControl as ISimpleAudioVolume; 
            if (_meters != null)
                _AudioMeterInformation = new CoreAudioApi.AudioMeterInformation(_meters);
            if (_volume != null)
                _SimpleAudioVolume = new SimpleAudioVolume(_volume);
            _AudioSessionControl = realAudioSessionControl;

            /* added -> */
            _audioSessionEvents = new AudioSessionEvents(this);
            Marshal.ThrowExceptionForHR(_AudioSessionControl.RegisterAudioSessionNotification(_audioSessionEvents));
            /* <- added */
        }
        internal AudioSessionControl(IAudioSessionControl2 realAudioSessionControl)
        {
            IAudioMeterInformation _meters = realAudioSessionControl as IAudioMeterInformation;
            ISimpleAudioVolume     _volume = realAudioSessionControl as ISimpleAudioVolume;

            if (_meters != null)
            {
                _AudioMeterInformation = new CoreAudioApi.AudioMeterInformation(_meters);
            }
            if (_volume != null)
            {
                _SimpleAudioVolume = new SimpleAudioVolume(_volume);
            }
            _AudioSessionControl = realAudioSessionControl;

            /* added -> */
            _audioSessionEvents = new AudioSessionEvents(this);
            Marshal.ThrowExceptionForHR(_AudioSessionControl.RegisterAudioSessionNotification(_audioSessionEvents));
            /* <- added */
        }
 /* added -> */
 public void Dispose()
 {
     if (_AudioSessionControl != null)
     {
         if(_audioSessionEvents != null)
             Marshal.ThrowExceptionForHR(_AudioSessionControl.UnregisterAudioSessionNotification(_audioSessionEvents));
         Marshal.ReleaseComObject(_AudioSessionControl);
         _audioSessionEvents = null;
     }
 }