示例#1
0
        /// <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");
        }