-
Notifications
You must be signed in to change notification settings - Fork 17
/
VolumeDeviceClass.cs
39 lines (35 loc) · 1.38 KB
/
VolumeDeviceClass.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// UsbEject version 1.0 March 2006
// written by Simon Mourier <email: simon [underscore] mourier [at] hotmail [dot] com>
using System;
using System.Collections.Generic;
using System.Text;
namespace UsbEject.Library
{
/// <summary>
/// The device class for volume devices.
/// </summary>
public class VolumeDeviceClass : DeviceClass
{
internal SortedDictionary<string, string> _logicalDrives = new SortedDictionary<string, string>();
/// <summary>
/// Initializes a new instance of the VolumeDeviceClass class.
/// </summary>
public VolumeDeviceClass()
: base(new Guid(Native.GUID_DEVINTERFACE_VOLUME))
{
foreach(string drive in Environment.GetLogicalDrives())
{
StringBuilder sb = new StringBuilder(1024);
if (Native.GetVolumeNameForVolumeMountPoint(drive, sb, sb.Capacity))
{
_logicalDrives[sb.ToString()] = drive.Replace("\\", "");
Console.WriteLine(drive + " ==> " + sb.ToString());
}
}
}
internal override Device CreateDevice(DeviceClass deviceClass, Native.SP_DEVINFO_DATA deviceInfoData, string path, int index, int disknum = -1)
{
return new Volume(deviceClass, deviceInfoData, path, index);
}
}
}