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 算力,解读结果公开显示在下面。
还没有人解读过这个文件。