Skip to content

A toolkit for Storage Device informations. Primarily used for reading SMART data from storage devices.

License

Notifications You must be signed in to change notification settings

Blacktempel/DiskInfoToolkit

Repository files navigation

DiskInfoToolkit

GitHub license Build master Nuget Nuget

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 8 & .NET 9
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 & .NET 9

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.

About

A toolkit for Storage Device informations. Primarily used for reading SMART data from storage devices.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Languages