Example #1
0
        public static bool GetDevicesOfCat(Guid cat, out ArrayList devs)
        {
            devs = null;
            int hr;
            object comObj = null;
            ICreateDevEnum enumDev = null;
            IEnumMoniker enumMon = null;
            IMoniker[] mon = new IMoniker[1];
            try
            {
                Type srvType = Type.GetTypeFromCLSID(Clsid.SystemDeviceEnum);
                if (srvType == null)
                    throw new NotImplementedException("System Device Enumerator");

                comObj = Activator.CreateInstance(srvType);
                enumDev = (ICreateDevEnum)comObj;
                hr = enumDev.CreateClassEnumerator(ref cat, out enumMon, 0);
                if (hr != 0)
                    throw new NotSupportedException("No devices of the category");

                int count = 0;
                IntPtr f = IntPtr.Zero;
                do
                {
                    hr = enumMon.Next(1, mon, f);
                    if ((hr != 0) || (mon[0] == null))
                        break;
                    DsDevice dev = new DsDevice();
                    dev.Name = GetFriendlyName(mon[0]);
                    if (devs == null)
                        devs = new ArrayList();
                    dev.Mon = mon[0]; mon[0] = null;
                    devs.Add(dev); dev = null;
                    count++;
                }
                while (true);

                return count > 0;
            }
            catch (Exception)
            {
                if (devs != null)
                {
                    foreach (DsDevice d in devs)
                        d.Dispose();
                    devs = null;
                }
                return false;
            }
            finally
            {
                enumDev = null;
                if (mon[0] != null)
                    Marshal.ReleaseComObject(mon[0]); mon[0] = null;
                if (enumMon != null)
                    Marshal.ReleaseComObject(enumMon); enumMon = null;
                if (comObj != null)
                    Marshal.ReleaseComObject(comObj); comObj = null;
            }
        }
 private void okButton_Click(object sender, EventArgs e)
 {
     if (deviceListVw.SelectedItems.Count != 1)
         return;
     ListViewItem selitem = deviceListVw.SelectedItems[0];
     SelectedDevice = selitem.Tag as DsDevice;
     Close();
 }
Example #3
0
        public static bool GetDevicesOfCat(Guid cat, out ArrayList devs)
        {
            devs = null;
            int            hr;
            object         comObj  = null;
            ICreateDevEnum enumDev = null;
            IEnumMoniker   enumMon = null;

            IMoniker[] mon = new IMoniker[1];
            try
            {
                Type srvType = Type.GetTypeFromCLSID(Clsid.SystemDeviceEnum);
                if (srvType == null)
                {
                    throw new NotImplementedException("System Device Enumerator");
                }

                comObj  = Activator.CreateInstance(srvType);
                enumDev = (ICreateDevEnum)comObj;
                hr      = enumDev.CreateClassEnumerator(ref cat, out enumMon, 0);
                if (hr != 0)
                {
                    throw new NotSupportedException("No devices of the category");
                }

                int    count = 0;
                IntPtr f     = IntPtr.Zero;
                do
                {
                    hr = enumMon.Next(1, mon, f);
                    if ((hr != 0) || (mon[0] == null))
                    {
                        break;
                    }
                    DsDevice dev = new DsDevice();
                    dev.Name = GetFriendlyName(mon[0]);
                    if (devs == null)
                    {
                        devs = new ArrayList();
                    }
                    dev.Mon            = mon[0]; mon[0] = null;
                    devs.Add(dev); dev = null;
                    count++;
                }while (true);

                return(count > 0);
            }
            catch (Exception)
            {
                if (devs != null)
                {
                    foreach (DsDevice d in devs)
                    {
                        d.Dispose();
                    }
                    devs = null;
                }
                return(false);
            }
            finally
            {
                enumDev = null;
                if (mon[0] != null)
                {
                    Marshal.ReleaseComObject(mon[0]);
                }
                mon[0] = null;
                if (enumMon != null)
                {
                    Marshal.ReleaseComObject(enumMon);
                }
                enumMon = null;
                if (comObj != null)
                {
                    Marshal.ReleaseComObject(comObj);
                }
                comObj = null;
            }
        }