Windows alatt a fájlok logikai elrendezésének legfelsőbb eleme a meghajtó. Ezek általában egy-egy fizikai eszközt reprezentálnak, de adódhat olyan is, hogy egy-egy fizikai eszköz több meghajtót is tartalmaz, ezeket hívjuk partíciónak. Ez a séma a DOS óta része a Microsoft operációs rendszereknek. Illetve adódhat olyan is, hogy több fizikai eszköz tartalmaz egy partíciót (RAID).
A meghajtók információinak lekérdezésére a DriveInfo osztály ad lehetőséget. Az osztály fontosabb tulajdonságai, metódusai:
DriveInfo(string driveName);
Az osztály csak paraméteres konstruktorral rendelkezik. A paraméter a meghajtó nevét határozza meg, amiről további információkat szeretnénk kinyerni.
static DriveInfo[] GetDrives();
Statikus metódus, amely egy DriveInfo tömbben visszaadja az összes elérhető meghajtó információt.
string Name { get; }
Lekérdezi a meghajtó nevét. Ez általában a meghajtó betűjele lesz, azonban a Windows NT vonal óta (2000 utáni rendszerek) egy meghajtó csatolható egy másik meghajtó üres mappájába. Ez főként szerverek esetén használatos, ahol nem biztos, hogy elég lenne az angol ABC a meghajtók azonosítására.
DirectoryInfo RootDirectory { get; }
A meghajtó gyökérkönyvtárát adja vissza egy DirectoryInfo osztály példányaként. Hagyományos meghajtók esetén ez megegyezik a meghajtó nevével.
DriveType DriveType { get; }
Visszaadja egy DriveType felsorolásban a meghajtó típusát. Az ismert meghajtó típusok:
| Név | Leírás |
|---|---|
| CDRom | Optikai meghajtók |
| Fixed | Fix telepítésű lemez (HDD vagy SSD) |
| Network | Hálózati megosztás meghajtóként csatolva |
| NoRootDirectory | Nem rendelkezik gyökér mappával |
| Ram | RAM lemez |
| Removable | Cserélhető meghajtó, mint floppy vagy USB kulcsok |
| Unknown | Ismeretlen típus |
NoRootDirectory típust akkor fogunk egy meghajtó típusára kapni, ha például a Z:\ meghajtó adatait szeretnénk lekérdezni, de a rendszerben nincs Z:\ meghajtó.
bool IsReady { get; }
Igaz értéket ad vissza, ha a meghajtó készen áll műveletek végzésére. A további tulajdonságok csak akkor kérdezhetőek le sikeresen, ha ezen tulajdonság értéke igaz.
string DriveFormat { get; }
Visszaadja szöveges információban a meghajtó fájlrendszerét.
long TotalFreeSpace { get; }
Visszaadja byte-ban a meghajtón elérhető összes szabad helyet.
long AvailableFreeSpace { get; }
Visszaadja byte-ban a meghajtón használható szabad helyet. Ezen tulajdonság lekérdezése figyelembe veszi a meghajtóra beállított kvótákat.
long TotalSize { get; }
Visszaadja byte-ban a meghajtó teljes méretét.
string VolumeLabel { get; set; }
Visszaadja vagy beállítja a meghajtó kötetcímkéjét. A beállítás csak rendszergazdai jogosultságok mellett lehetséges Windows Vista óta. Ha nem így fut a programunk, akkor kivételt kapunk.
Az alábbi példakód a meghajtók információinak lekérdezését mutatja be:
using System;
using System.IO;
namespace PeldaMeghajtok
{
class Program
{
static void Main(string[] args)
{
var meghajtok = DriveInfo.GetDrives();
foreach (var m in meghajtok)
{
Console.WriteLine("--------------------------");
Console.WriteLine("Nev: {0}", m.Name);
Console.WriteLine("Root dir: {0}", m.RootDirectory);
Console.WriteLine("IsReady: {0}", m.IsReady);
Console.WriteLine("Tipus: {0,-20}", m.DriveType);
if (m.IsReady)
{
//ha nem IsReady, akkor nincs benne lemez
//vagy nem áll kész további műveletekre
Console.WriteLine("Kotetcimke: {0}", m.VolumeLabel);
Console.WriteLine("Formatum: {0}", m.DriveFormat);
Console.WriteLine("Meret: {0} byte", m.TotalSize);
Console.WriteLine("Felhasznalhato: {0} byte", m.AvailableFreeSpace);
Console.WriteLine("Szabad: {0} byte", m.TotalFreeSpace);
}
}
Console.ReadKey();
}
}
}
A program egy lehetséges kimenete:
--------------------------
Nev: C:\
Root dir: C:\
IsReady: True
Tipus: Fixed
Kotetcimke: Windows
Formatum: NTFS
Meret: 255802208256 byte
Felhasznalhato: 127409623040 byte
Szabad: 127409623040 byte
--------------------------
Nev: D:\
Root dir: D:\
IsReady: True
Tipus: Fixed
Kotetcimke: Data
Formatum: NTFS
Meret: 255805353984 byte
Felhasznalhato: 239283384320 byte
Szabad: 239283384320 byte