/// <summary> /// Log the filters in the graph. /// </summary> protected void LogFilters() { LogMessage("Logging filters"); IEnumFilters enumFilters = null; IBaseFilter[] filters = new IBaseFilter[1]; reply = graphBuilder.EnumFilters(out enumFilters); DsError.ThrowExceptionForHR(reply); while (enumFilters.Next(filters.Length, filters, IntPtr.Zero) == 0) { FilterInfo filterInfo; reply = filters[0].QueryFilterInfo(out filterInfo); DsError.ThrowExceptionForHR(reply); LogMessage("Filter: " + filterInfo.achName); logPins(filters[0]); if (filterInfo.pGraph != null) { Marshal.ReleaseComObject(filterInfo.pGraph); } Marshal.ReleaseComObject(filters[0]); } Marshal.ReleaseComObject(enumFilters); LogMessage("All filters logged"); }