title: Exception on call hangup for landline phone
body: <p>I am developing software for landline phones and full-duplex voice modems using C# and TAPI 3 library. Call answering is working fine but call hangup is throwing an exception. I did a lot of search to find solution but I could not. Following are the errors:</p>
  
  <blockquote>
    <p>Exception is occurring on calling method  ici.ReleaseUserUserInfo();
    {"This implementation doesn't take advises (Exception from HRESULT:
    0x80040003 (OLE_E_ADVISENOTSUPPORTED))"}  System.Exception
    {System.Runtime.InteropServices.COMException}"</p>
  </blockquote>
  
  <p>My goal is to save recorded calls. One interesting thing is that if, before call hangup, I close the application, it successfully saves the recorded  call.</p>
  
  <p>My code:</p>
  
  <pre><code>private void BtnAnswer_Click(object sender, EventArgs e)
  {
      IEnumCall ec = ia[line].EnumerateCalls();
      uint arg = 0;
      ITCallInfo ici;
      ITTerminal recordTerminal;//NY test record
      try
      {
          ec.Next(1, out ici, ref arg);
          ITBasicCallControl2 bc = (TAPI3Lib.ITBasicCallControl2)ici;
          recordTerminal =    bc.RequestTerminal(TapiConstants.CLSID_String_FileRecordingTerminal,
          TapiConstants.TAPIMEDIATYPE_MULTITRACK,
          TAPI3Lib.TERMINAL_DIRECTION.TD_RENDER);
          ITMediaControl mediacontrol = (ITMediaControl)recordTerminal;
          ITMediaRecord mediarecord = (ITMediaRecord)recordTerminal;
          mediarecord.FileName = "a.wav";
          bc.SelectTerminalOnCall(recordTerminal);
          bc.Answer();
          mediacontrol.Start();
      }
      catch (Exception exp)
      {
          MessageBox.Show("There may not be any calls to answer! \n\n" + exp.ToString(), "TAPI3");
      }
  }
  
  private void BtnHang_Click(object sender, EventArgs e)
  {
      IEnumCall ec = ia[line].EnumerateCalls();
      uint arg = 0;
      ITCallInfo ici;
      try
      {
          ec.Next(1, out ici, ref arg);
          ITBasicCallControl bc = (ITBasicCallControl)ici;
          bc.Disconnect(DISCONNECT_CODE.DC_NORMAL);
  
          ici.ReleaseUserUserInfo();
      }
      catch (Exception exp)
      {
          MessageBox.Show("No call to disconnect!", "TAPI3");
      }
  }
  </code></pre>