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; }
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); }
/// <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); }