4.5 KiB
4.5 KiB
DiskInfoToolkit
A toolkit for Storage Device informations. Primarily used for reading S.M.A.R.T. data from storage devices.
Project overview
| Project | .NET Version[s] |
|---|---|
| DiskInfoToolkit This library reads detailed information from various types of storage devices - including NVMe, SSD, HDD and USB drives. It provides a high level API to read device data, SMART attributes, Partitions and other hardware details directly from the system. |
.NET Framework 4.7.2 & 4.8.1 .NET Standard 2.0 .NET 8, 9 and 10 |
| ConsoleOutputTest Example Application to show how some library functionality can be used. |
.NET 8 |
| DiskInfoViewer Visualization of detected storage devices on your system. This supports adding / removing storage devices and updates data. UI is built using Avalonia UI. |
.NET 8 |
What platforms are supported ?
For the moment we only support Windows.
We are looking into supporting Linux later on.
Where can I download it ?
You can download the latest release from here.
How can I help improve the project ?
Feel free to give feedback and contribute to our project !
Pull requests are welcome. Please include as much information as possible.
Developer information
Integrate the library in your own application
Sample code
static class Program
{
static void Main(string[] args)
{
//You can enable logging and set level, if you need logging output
Logger.Instance.IsEnabled = true;
Logger.Instance.LogLevel = LogLevel.Trace;
//Reload storage devices
StorageManager.ReloadStorages();
//Go through all devices
foreach (var storage in StorageManager.Storages)
{
//Output Model of storage device
Console.WriteLine($"Detected storage device '{storage.Model}'.");
}
//Register change event
StorageManager.StoragesChanged += DevicesChanged;
var secondsToWait = 10;
//Wait for specified amount of time and listen to device changes
Console.WriteLine($"Waiting {secondsToWait} seconds for device changes.");
Thread.Sleep(TimeSpan.FromSeconds(secondsToWait));
//Unregister change event
StorageManager.StoragesChanged -= DevicesChanged;
//Save log file to current directory, if you enabled logging output
Logger.Instance.SaveToFile("Log.txt", false);
//All done
Console.WriteLine("Press enter to exit...");
Console.ReadLine();
}
static void DevicesChanged(StoragesChangedEventArgs e)
{
//Devices have changed, log event information
Console.WriteLine($"Eventhandler {nameof(StorageManager.StoragesChanged)} - {e.StorageChangeIdentifier} => {e.Storage.Model}.");
//Simple output
switch (e.StorageChangeIdentifier)
{
case StorageChangeIdentifier.Added:
Console.WriteLine($"Added: '{e.Storage.Model}'");
break;
case StorageChangeIdentifier.Removed:
Console.WriteLine($"Removed: '{e.Storage.Model}'");
break;
}
}
}
License
DiskInfoToolkit is free and open source software licensed under MPL 2.0.
You can use it in private and commercial projects.
Keep in mind that you must include a copy of the license in your project.
Some of our core code is based on CrystalDiskInfo.