Example #1
0
        // Token: 0x060001B9 RID: 441 RVA: 0x00014AEC File Offset: 0x00012CEC
        public static int EnumerateClasses(uint ClassIndex, StringBuilder ClassName, StringBuilder ClassDescription, ref bool DevicePresent)
        {
            Guid empty = Guid.Empty;

            DeviceClasses.SP_DEVINFO_DATA sp_DEVINFO_DATA = new DeviceClasses.SP_DEVINFO_DATA();
            uint num  = 0u;
            uint num2 = DeviceClasses.CM_Enumerate_Classes(ClassIndex, ref empty, 0u);

            DevicePresent = false;
            new DeviceClasses.SP_CLASSIMAGELIST_DATA();
            if (num2 != 0u)
            {
                return((int)num2);
            }
            DeviceClasses.SetupDiClassNameFromGuidA(ref empty, ClassName, num, ref num);
            if (num > 0u)
            {
                ClassName.Capacity = (int)num;
                DeviceClasses.SetupDiClassNameFromGuidA(ref empty, ClassName, num, ref num);
            }
            IntPtr deviceInfoSet = DeviceClasses.SetupDiGetClassDevs(ref empty, 0u, IntPtr.Zero, 2u);

            if (deviceInfoSet.ToInt32() == -1)
            {
                DevicePresent = false;
                return(0);
            }
            uint memberIndex = 0u;

            sp_DEVINFO_DATA.cbSize    = 28;
            sp_DEVINFO_DATA.DevInst   = 0;
            sp_DEVINFO_DATA.ClassGuid = Guid.Empty;
            sp_DEVINFO_DATA.Reserved  = 0UL;
            if (!DeviceClasses.SetupDiEnumDeviceInfo(deviceInfoSet, memberIndex, sp_DEVINFO_DATA))
            {
                DevicePresent = false;
                return(0);
            }
            DeviceClasses.SetupDiDestroyDeviceInfoList(deviceInfoSet);
            IntPtr keyClass = DeviceClasses.SetupDiOpenClassRegKeyExA(ref empty, 33554432u, 1, IntPtr.Zero, 0u);

            if (keyClass.ToInt32() == -1)
            {
                DevicePresent = false;
                return(0);
            }
            uint num3 = 1000u;

            ClassDescription.Capacity = 1000;
            uint num4 = DeviceClasses.RegQueryValueA(keyClass, 0u, ClassDescription, ref num3);

            if (num4 != 0u)
            {
                ClassDescription = new StringBuilder("");
            }
            DevicePresent             = true;
            DeviceClasses.ClassesGuid = sp_DEVINFO_DATA.ClassGuid;
            return(0);
        }
Example #2
0
 private static extern bool SetupDiEnumDeviceInfo(IntPtr DeviceInfoSet, uint MemberIndex, DeviceClasses.SP_DEVINFO_DATA DeviceInfoData);