dshow/FilterCollection.cs

(开头部分) 2KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

namespace dshow
{
	using System;
	using System.Collections;
	using System.Runtime.InteropServices;
	using dshow.Core;

	/// <summary>
	/// Summary description for FilterCollection.
	/// </summary>
	public class FilterCollection : CollectionBase
	{
		public FilterCollection(Guid category)
		{
			CollectFilters(category);
		}

		// collect filters of specified category
		private void CollectFilters(Guid category)
		{
			object				comObj = null;
			ICreateDevEnum		enumDev = null;
			UCOMIEnumMoniker	enumMon = null;
			UCOMIMoniker[]		devMon = new UCOMIMoniker[1];
			int					hr;

			try
			{
				// Get the system device enumerator
				Type srvType = Type.GetTypeFromCLSID(Clsid.SystemDeviceEnum);
				if (srvType == null)
					throw new ApplicationException("Failed creating device enumerator");

				// create device enumerator
				comObj = Activator.CreateInstance(srvType);
				enumDev = (ICreateDevEnum) comObj;

				// Create an enumerator to find filters of specified category
				hr = enumDev.CreateClassEnumerator(ref category, out enumMon, 0);
				if (hr != 0)
					throw new ApplicationException("No devices of the category");

				// Collect all filters
				int n;
				while (true)
				{
					// Get next filter
					hr = enumMon.Next(1, devMon, out n);
					if ((hr != 0) || (devMon[0] == null))
						break;

					// Add the filter
					Filter filter = new Filter(devMon[0]);
					InnerList.Add(filter);

					// Release COM object
					Marshal.ReleaseComObject(devMon[0]);
					devMon[0] = null;
				}

后面还有 36 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。