private void Config()
        {
            IWMWriter         pWriter;
            IWMWriterAdvanced pWriterA;

            WMUtils.WMCreateWriter(IntPtr.Zero, out pWriter);
            pWriterA = pWriter as IWMWriterAdvanced;

            WMUtils.WMCreateWriterFileSink(out m_pSink);

            pWriterA.AddSink(m_pSink);

            m_rcb = m_pSink as IWMRegisterCallback;
        }
示例#2
0
        public override void Dispose(bool disposing)
        {
            AppLogger.Message("ASFNetSink -- Dispose called");

            if (_eventTimer != null)
            {
                _eventTimer.Enabled = false;
            }

            if (_netSink != null)
            {
                try
                {
                    IWMRegisterCallback iCallback = (IWMRegisterCallback)_netSink;
                    iCallback.Unadvise(this, IntPtr.Zero);
                    _netSink.Close();
                }
                catch (Exception ex)
                {
                    AppLogger.Dump(ex);
                }
                finally
                {
                    Marshal.ReleaseComObject(_netSink);
                    _netSink = null;
                }
            }
            if (_writerAdvanced != null)
            {
                RemoveAllSinks(_writerAdvanced);
                Marshal.ReleaseComObject(_writerAdvanced);
                _writerAdvanced = null;
            }
            if (_writer != null)
            {
                Marshal.ReleaseComObject(_writer);
                _writer = null;
            }
            if (_asfFilter != null)
            {
                Marshal.ReleaseComObject(_asfFilter);
                _asfFilter = null;
            }

            base.Dispose(disposing);
        }
示例#3
0
        /// <summary>
        /// Creates the Network Writer Sink (populates member variable)
        /// </summary>
        private void CreateNetworkWriterSink()
        {
            //Create Network Sink
            WMUtils.WMCreateWriterNetworkSink(out _netSink);

            // Configure the network sink

            //register to receive callbacks from the Network Sink
            IWMRegisterCallback iCallback = (IWMRegisterCallback)_netSink;

            iCallback.Advise(this, IntPtr.Zero);

            _netSink.SetNetworkProtocol(NetProtocol.HTTP);

            if ((SourceConfig.MaxClients < 0) || (SourceConfig.MaxClients > 50))
            {
                throw new SourceConfigException("MaxClients must be 0-50 for ASFNetSink!");
            }
            _netSink.SetMaximumClients(SourceConfig.MaxClients);
        }