public List<DriveInformation> GetDriveInformation()
 {
     var driveList = new List<DriveInformation>();
     var drives = DriveInfo.GetDrives();
     foreach (var drive in drives)
     {
         var driveInfo = new DriveInformation();
         if (!drive.IsReady) continue;
         driveInfo.Name = drive.Name;
         driveInfo.FreeSpace = drive.TotalFreeSpace;
         driveInfo.TotalSize = drive.TotalSize;
         driveInfo.DriveType = drive.DriveType.ToString();
         driveInfo.DriveFormat = drive.DriveFormat;
         driveInfo.VolumeLabel = drive.VolumeLabel;
         driveInfo.RootDirectory = drive.RootDirectory.ToString();
         driveInfo.IsReady = drive.IsReady;
         driveList.Add(driveInfo);
     }
     return driveList;
 }
 public List<DriveInformation> GetDriveInformation()
 {
     var q = new WqlObjectQuery("SELECT * FROM Win32_DiskDrive");
     var res = new ManagementObjectSearcher(q);
     var driveNames = (from ManagementBaseObject o in res.Get() select o["Model"]?.ToString()).ToList();
     var driveList = new List<DriveInformation>();
     var drives = DriveInfo.GetDrives();
     for (var index = 0; index < drives.Length; index++)
     {
         var drive = drives[index];
         var driveInfo = new DriveInformation();
         if (!drive.IsReady) continue;
         driveInfo.Model = driveNames.ElementAtOrDefault(index) != null ? driveNames[index] : "Unknown Model";
         driveInfo.Name = drive.Name;
         driveInfo.FreeSpace = drive.TotalFreeSpace;
         driveInfo.TotalSize = drive.TotalSize;
         driveInfo.DriveType = drive.DriveType.ToString();
         driveInfo.DriveFormat = drive.DriveFormat;
         driveInfo.VolumeLabel = drive.VolumeLabel;
         driveInfo.RootDirectory = drive.RootDirectory.ToString();
         driveInfo.IsReady = drive.IsReady;
         driveList.Add(driveInfo);
     }
     return driveList;
 }