public ISARVolumeControl createSARVolumeControl()
        {
            ISARVolumeControl lresult = null;

            do
            {
                try
                {
                    if (checkICaptureManagerControl())
                    {
                        break;
                    }

                    object lUnknown;

                    mICaptureManagerControl.createMisc(
                        typeof(CaptureManagerLibrary.ISARVolumeControl).GUID,
                        out lUnknown);

                    if (lUnknown == null)
                    {
                        break;
                    }

                    var lSARVolumeControl = lUnknown as CaptureManagerLibrary.ISARVolumeControl;

                    if (lSARVolumeControl == null)
                    {
                        break;
                    }

                    lresult = new SARVolumeControl(lSARVolumeControl);
                }
                catch (Exception exc)
                {
                    LogManager.getInstance().write(exc.Message);
                }
            } while (false);

            return(lresult);
        }
        public MainWindow()
        {
            InitializeComponent();

            try
            {
                mCaptureManager = new CaptureManager("CaptureManager.dll");
            }
            catch (Exception)
            {
                mCaptureManager = new CaptureManager();
            }

            LogManager.getInstance().WriteDelegateEvent += MainWindow_WriteDelegateEvent;

            if (mCaptureManager == null)
            {
                return;
            }

            mSourceControl = mCaptureManager.createSourceControl();

            if (mSourceControl == null)
            {
                return;
            }

            mSinkControl = mCaptureManager.createSinkControl();

            if (mSinkControl == null)
            {
                return;
            }

            mISessionControl = mCaptureManager.createSessionControl();

            if (mISessionControl == null)
            {
                return;
            }

            mISARVolumeControl = mCaptureManager.createSARVolumeControl();

            if (mISARVolumeControl == null)
            {
                return;
            }

            mRVolume.ValueChanged += (s, ev) => {
                if (mSARSinkOutputNode != null)
                {
                    mISARVolumeControl.setChannelVolume(mSARSinkOutputNode, 0, (float)ev.NewValue);
                }
            };

            mLVolume.ValueChanged += (s, ev) => {
                if (mSARSinkOutputNode != null)
                {
                    mISARVolumeControl.setChannelVolume(mSARSinkOutputNode, 1, (float)ev.NewValue);
                }
            };


            XmlDataProvider lXmlDataProvider = (XmlDataProvider)this.Resources["XmlSources"];

            if (lXmlDataProvider == null)
            {
                return;
            }

            XmlDocument doc = new XmlDocument();

            string lxmldoc = "";

            mCaptureManager.getCollectionOfSources(ref lxmldoc);

            doc.LoadXml(lxmldoc);

            lXmlDataProvider.Document = doc;



            mSinkControl.createSinkFactory(Guid.Empty, out mSARSinkFactory);
        }