Это не так просто. Вы не можете вызвать любой API, который скажет вам: «Устройство X = Диск Y». Это потому, что отношения не один к одному; это много ко многим.
Буква диска соответствует тому. Буква диска - это точка монтирования. Вы также можете подключить том в точке повторной обработки каталога - один и тот же том можно подключить несколько раз.
Одно устройство может содержать несколько томов (например, разделы диска). Это часто встречается.
Один том может находиться на нескольких устройствах (например, на накопительных дисках). Да, обычно том располагается в одном разделе одного устройства, но это не всегда так.
Обратите также внимание, что тому вообще не требуется назначать точку монтирования (рассмотрим раздел EFI размером 100 МБ, который вы часто видите на загрузочном диске Windows 7).
Одним из подходов является перечисление томов по идентификатору GUID (FindFirstVolume / FindNextVolume), а затем получение их экстентов диска с помощью IOCTL (IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS). Это скажет вам номер диска / с, которые содержат части тома. Затем используйте GetVolumePathNamesForVolumeName, чтобы получить точку / точки монтирования для тома (может быть не более одной буквы диска, но он может быть смонтирован в нескольких каталогах).
Да, это действительно так сложно.