Получение информации о физическом устройстве по заданному пути к файлу - PullRequest
3 голосов
/ 22 сентября 2008

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

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

\\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\)

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

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

1 Ответ

2 голосов
/ 22 сентября 2008

Этот вызов 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...