Hardware/HDD/HarddriveGroup.cs
author moel.mich
Sat, 11 Aug 2012 21:48:54 +0000
changeset 379 7af3aaeb42e9
parent 324 c6ee430d6995
permissions -rw-r--r--
Added a few checks and delays to the driver loading code to increase the chance of loading the driver.
moel@324
     1
/*
moel@344
     2
 
moel@344
     3
  This Source Code Form is subject to the terms of the Mozilla Public
moel@344
     4
  License, v. 2.0. If a copy of the MPL was not distributed with this
moel@344
     5
  file, You can obtain one at http://mozilla.org/MPL/2.0/.
moel@344
     6
 
moel@344
     7
  Copyright (C) 2009-2011 Michael Möller <mmoeller@openhardwaremonitor.org>
moel@344
     8
	Copyright (C) 2010 Paul Werelds
moel@344
     9
  Copyright (C) 2011 Roland Reinl <roland-reinl@gmx.de>
moel@324
    10
moel@324
    11
*/
moel@324
    12
moel@324
    13
using System;
moel@324
    14
using System.Collections.Generic;
moel@324
    15
using System.Globalization;
moel@324
    16
using System.Text;
moel@324
    17
moel@324
    18
namespace OpenHardwareMonitor.Hardware.HDD {
moel@324
    19
  internal class HarddriveGroup : IGroup {
moel@324
    20
moel@324
    21
    private const int MAX_DRIVES = 32;
moel@324
    22
moel@324
    23
    private readonly List<AbstractHarddrive> hardware = 
moel@324
    24
      new List<AbstractHarddrive>();
moel@324
    25
moel@324
    26
    public HarddriveGroup(ISettings settings) {
moel@324
    27
      int p = (int)Environment.OSVersion.Platform;
moel@324
    28
      if (p == 4 || p == 128) return;
moel@324
    29
moel@324
    30
      ISmart smart = new WindowsSmart();
moel@324
    31
moel@324
    32
      for (int drive = 0; drive < MAX_DRIVES; drive++) {
moel@324
    33
        AbstractHarddrive instance =
moel@324
    34
          AbstractHarddrive.CreateInstance(smart, drive, settings);
moel@324
    35
        if (instance != null) {
moel@324
    36
          this.hardware.Add(instance);
moel@324
    37
        }
moel@324
    38
      }
moel@324
    39
    }
moel@324
    40
moel@324
    41
    public IHardware[] Hardware {
moel@324
    42
      get {
moel@324
    43
        return hardware.ToArray();
moel@324
    44
      }
moel@324
    45
    }
moel@324
    46
moel@324
    47
    public string GetReport() {
moel@324
    48
      return null;
moel@324
    49
    }
moel@324
    50
moel@324
    51
    public void Close() {
moel@324
    52
      foreach (AbstractHarddrive hdd in hardware) 
moel@324
    53
        hdd.Close();
moel@324
    54
    }
moel@324
    55
  }
moel@324
    56
}