public static bool GetDevicesOfCat(Guid cat, out ArrayList devs) { bool flag; devs = null; object o = null; ICreateDevEnum enum2 = null; UCOMIEnumMoniker ppEnumMoniker = null; UCOMIMoniker[] rgelt = new UCOMIMoniker[1]; try { Type typeFromCLSID = Type.GetTypeFromCLSID(Clsid.SystemDeviceEnum); if (typeFromCLSID == null) { throw new NotImplementedException("System Device Enumerator"); } o = Activator.CreateInstance(typeFromCLSID); enum2 = (ICreateDevEnum)o; if (enum2.CreateClassEnumerator(ref cat, out ppEnumMoniker, 0) != 0) { throw new NotSupportedException("No devices of the category"); } int num3 = 0; while (true) { int num2; if ((ppEnumMoniker.Next(1, rgelt, out num2) != 0) || (rgelt[0] == null)) { break; } DsDevice device = new DsDevice { Name = GetFriendlyName(rgelt[0]) }; if (devs == null) { devs = new ArrayList(); } device.Mon = rgelt[0]; rgelt[0] = null; devs.Add(device); device = null; num3++; } flag = num3 > 0; } catch (Exception) { if (devs != null) { foreach (DsDevice device2 in devs) { device2.Dispose(); } devs = null; } flag = false; } finally { enum2 = null; if (rgelt[0] != null) { Marshal.ReleaseComObject(rgelt[0]); } rgelt[0] = null; if (ppEnumMoniker != null) { Marshal.ReleaseComObject(ppEnumMoniker); } ppEnumMoniker = null; if (o != null) { Marshal.ReleaseComObject(o); } o = null; } return(flag); }
public static bool GetDevicesOfCat(Guid cat, out ArrayList devs) { bool flag; devs = null; object o = null; ICreateDevEnum enum2 = null; UCOMIEnumMoniker ppEnumMoniker = null; UCOMIMoniker[] rgelt = new UCOMIMoniker[1]; try { Type typeFromCLSID = Type.GetTypeFromCLSID(Clsid.SystemDeviceEnum); if (typeFromCLSID == null) { throw new NotImplementedException("System Device Enumerator"); } o = Activator.CreateInstance(typeFromCLSID); enum2 = (ICreateDevEnum)o; if (enum2.CreateClassEnumerator(ref cat, out ppEnumMoniker, 0) != 0) { throw new NotSupportedException("No devices of the category"); } int num3 = 0; while (true) { int num2; if ((ppEnumMoniker.Next(1, rgelt, out num2) != 0) || (rgelt[0] == null)) { break; } DsDevice device = new DsDevice { Name = GetFriendlyName(rgelt[0]) }; if (devs == null) { devs = new ArrayList(); } device.Mon = rgelt[0]; rgelt[0] = null; devs.Add(device); device = null; num3++; } flag = num3 > 0; } catch (Exception) { if (devs != null) { foreach (DsDevice device2 in devs) { device2.Dispose(); } devs = null; } flag = false; } finally { enum2 = null; if (rgelt[0] != null) { Marshal.ReleaseComObject(rgelt[0]); } rgelt[0] = null; if (ppEnumMoniker != null) { Marshal.ReleaseComObject(ppEnumMoniker); } ppEnumMoniker = null; if (o != null) { Marshal.ReleaseComObject(o); } o = null; } return flag; }