// 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); }
private static extern bool SetupDiEnumDeviceInfo(IntPtr DeviceInfoSet, uint MemberIndex, DeviceClasses.SP_DEVINFO_DATA DeviceInfoData);