Получение информации о физическом устройстве по заданному пути к файлу

StackOverflow https://stackoverflow.com/questions/115874

  •  02-07-2019
  •  | 
  •  

Вопрос

Предположим, у вас есть полный путь к доступному файлу или папке в системе.Как я могу получить какой-то уникальный идентификатор физического устройства, на котором фактически находится файл (или папка)?

Моя первая попытка заключалась в использовании System.IO.DriveInfo это зависит от наличия буквы диска.Но пути UNC и несколько сетевых дисков, сопоставленных с одним и тем же физическим устройством на сервере, добавляют некоторые сложности.Например, все эти три пути указывают на одну и ту же папку на одном устройстве.

\\myserver\users\brian\public\music\
s:\users\brian\public\music\          (here s:\ is mapped to \\myserver\)
u:\public\users\music\                (here u:\ is mapped to \\myserver\users\brian\)

В конечном итоге моя цель — воспользоваться этими несколькими путями и сообщить об объеме используемого и свободного дискового пространства на каждом устройстве.Я хочу объединить эти три пути в один элемент отчета, а не в три отдельных элемента.

Существует ли какой-либо API Windows, который может помочь найти эту информацию по любому произвольному полному пути?

Это было полезно?

Решение

Этот вызов API-интерфейса Win должен дать вам все, что вам нужно относительно дискового пространства.

  GetDiskFreeSpaceEx

http://msdn.microsoft.com/en-us/library/aa364937(VS.85).aspx

Кроме того, чтобы определить, относятся ли все три сопоставления к одному и тому же физическому диску, выполните вызов

GetVolumeInformation

и сравните серийные номера возвращенных томов

http://msdn.microsoft.com/en-us/library/aa364993(VS.85).aspx

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top