Obtenção de informações sobre o dispositivo físico de um determinado caminho de arquivo
Pergunta
Suponha que você tenha um caminho completo para um arquivo acessível ou pasta no sistema. Como posso obter algum tipo de identificador exclusivo para o dispositivo físico que o arquivo (ou pasta), na verdade, reside em?
Minha primeira tentativa foi usar System.IO.DriveInfo
que depende de ter uma letra de unidade. Mas os caminhos UNC e várias unidades de rede mapeadas para o mesmo dispositivo físico em um servidor adicionar algumas complicações. Por exemplo, estes 3 caminhos apontam para a mesma pasta no mesmo dispositivo.
\\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\)
Em última análise, o meu objetivo é levar esses vários caminhos e informar a quantidade de espaço em disco usado e livre em cada dispositivo. Eu quero combinar estes 3 caminhos em um único item no relatório e não 3 itens separados.
Existe alguma API do Windows que pode ajudar a encontrar essa informação dada qualquer caminho completo arbitrária?
Solução
Esta chamada vitória API deve obter o que você precisa sobre espaço em disco
GetDiskFreeSpaceEx
http://msdn.microsoft.com/ en-us / library / aa364937 (VS.85) .aspx
Além disso, para determinar se os três mapeamentos todos são do mesmo disco físico, execute uma chamada para
GetVolumeInformation
e comparar os números de série de volume retornou
http://msdn.microsoft.com/ en-us / library / aa364993 (VS.85) .aspx