public List <Drive> GetDrives(IIdoit idoit) { if (hardDisks == null) { GetStorageDevices(); } IdoitEnumerator fsEnumerator = idoit.Dialog(new Drive().Constant, "filesystem"); //IdoitEnumerator onDeviceEnumerator = idoit.Dialog(new Drive().Constant, "device"); //Das funktioniert wegen einem Bug in der i-doit API leider nicht... List <Drive> result = new List <Drive>(); foreach (DriveInfo di in DriveInfo.GetDrives()) { if (!di.IsReady) { continue; //Wechseldatenträger und DVDs überspringen. } Drive child = new Drive(); child.mount_point = di.Name; child.title = di.VolumeLabel; child.system_drive = Environment.GetEnvironmentVariable("windir") .ToLowerInvariant() .StartsWith(di.RootDirectory.FullName.ToLowerInvariant()) ? 1 : 0; if (fsEnumerator.TestTitle(di.DriveFormat)) { child.filesystem = fsEnumerator.FindTitleLike(di.DriveFormat); } else { idoit.DialogEdit(child, "filesystem", di.DriveFormat); fsEnumerator = idoit.Dialog(new Drive().Constant, "filesystem"); child.filesystem = fsEnumerator.FindTitleLike(di.DriveFormat); } child.capacity = (float)((long)(di.TotalSize / 1000 / 1000 / 1000)); child.serial = GetVolumeSerialNumber(di.Name); child.unit = Drive.Unit.GB; //child.device lässt sich wegen o.g. Bug nicht korrekt setzen... result.Add(child); } return(result); }
public List <SoundCard> GetSoundCards(IIdoit idoit) { IdoitEnumerator manufacEnum = idoit.Dialog(new SoundCard().Constant, "manufacturer"); List <SoundCard> result = new List <SoundCard>(); try { ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_SoundDevice"); foreach (ManagementObject queryObj in searcher.Get()) { SoundCard child = new SoundCard(); //Wert für Hersteller herausfinden. string manufacQuery = (string)queryObj["Manufacturer"]; if (!string.IsNullOrEmpty(manufacQuery)) { if (!manufacEnum.TestTitle(manufacQuery)) { //Hersteller hinzufügen, falls noch nicht bekannt... idoit.DialogEdit(new SoundCard(), "manufacturer", manufacQuery); manufacEnum = idoit.Dialog(new SoundCard().Constant, "manufacturer"); } child.manufacturer = manufacEnum.FindTitleLike(manufacQuery); } child.title = (string)queryObj["Caption"]; child.description = (string)queryObj["Description"]; result.Add(child); } } catch (Exception e) { throw; } return(result); }
public List <Memory> GetMemoryBanks(IIdoit idoit) { List <Memory> result = new List <Memory>(); List <string> knownBankLabels = new List <string>(); IdoitEnumerator titles = idoit.Dialog(new Memory().Constant, "title"); IdoitEnumerator manufactors = idoit.Dialog(new Memory().Constant, "manufacturer"); IdoitEnumerator type = idoit.Dialog(new Memory().Constant, "type"); int bankNo = 0; try { ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_PhysicalMemory"); foreach (ManagementObject queryObj in searcher.Get()) { bankNo++; string actualPartNumber = (string)queryObj["PartNumber"]; //ältere RAM Bänke geben evtl. null zurück if (!string.IsNullOrEmpty(actualPartNumber)) { actualPartNumber = actualPartNumber.Trim(); } string actualManufacturer = (string)queryObj["Manufacturer"]; //ältere RAM Bänke geben evtl. null zurück if (!string.IsNullOrEmpty(actualManufacturer)) { actualManufacturer.Trim(); } if (IsRamManufacturerSpecified(actualManufacturer)) { //Wenn kein Hersteller definiert, dann anhand der PartNumber den Hersteller herausfinden. if (!string.IsNullOrEmpty(actualPartNumber)) { foreach (var kv in Config.ramManufactors) { if (actualPartNumber.StartsWith(kv.Key)) { actualManufacturer = kv.Value; break; } } } } Memory child = new Memory(); child.quantity = 1; string bankLabel = queryObj["BankLabel"].ToString(); if (knownBankLabels.Contains(bankLabel)) { bankLabel = "Unknown Memory Bank " + bankNo; } else { knownBankLabels.Add(bankLabel); } if (!titles.TestTitle(bankLabel)) { idoit.DialogEdit(new Memory(), "title", bankLabel); titles = idoit.Dialog(new Memory().Constant, "title"); } child.title = titles.FindTitleLike(bankLabel); if (IsRamManufacturerSpecified(actualManufacturer)) { if (!manufactors.TestTitle(actualManufacturer)) { //Sollte der Hersteller des RAMs bekannt sein, und er ist weder in u-doit noch in i-doit bekannt, den RAM-Hersteller eintragen: idoit.DialogEdit(new Memory(), "manufacturer", actualManufacturer); manufactors = idoit.Dialog(new Memory().Constant, "manufacturer"); } child.manufacturer = manufactors.FindTitleLike(actualManufacturer); } if (!string.IsNullOrEmpty(actualPartNumber)) { if (!type.TestTitle(actualPartNumber)) { idoit.DialogEdit(new Memory(), "type", actualPartNumber); type = idoit.Dialog(new Memory().Constant, "type"); } child.type = type.FindTitleLike(actualPartNumber); } child.capacity = (float)(Convert.ToInt64(queryObj["Capacity"].ToString()) / 1024 / 1024); child.unit = Memory.C__CATG__MEMORY_UNIT.C__MEMORY_UNIT__MB; child.description = queryObj["Description"].ToString(); result.Add(child); } } catch (Exception) { throw; } return(result); }