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