Копал в сторону DriveInfo, но сравнивать два массива — не слишком изящное решение.
Ответ
Можно использовать технологию WMI
Подключаете к проекту сборку System.Management.dll.
Пишете следующий код:
using System.Management;
var watcher = new ManagementEventWatcher();
var query = new WqlEventQuery("SELECT * FROM Win32_VolumeChangeEvent WHERE EventType = 2");
watcher.Query = query;
watcher.EventArrived += Watcher_EventArrived;
watcher.Query = query;
watcher.Start();
private static void Watcher_EventArrived(object sender, EventArrivedEventArgs e)
{
var driveName = e.NewEvent.Properties["DriveName"].Value.ToString();
Console.WriteLine(driveName);
}
В событии получаем букву диска.
Объект ManagementEventWatcher является Disposable, поэтому крайне желательно после окончания работы с ним освободить ресурсы вызовом метода Dispose (или используйте using, если возможно).
Подробнее можно посмотреть здесь
Комментариев нет:
Отправить комментарий