Obtener información sobre el dispositivo físico a partir de una ruta de archivo determinada
Pregunta
Suponga que tiene una ruta completa a un archivo o carpeta accesible en el sistema.¿Cómo puedo obtener algún tipo de identificador único para el dispositivo físico en el que realmente reside el archivo (o carpeta)?
Mi primer intento fue utilizar System.IO.DriveInfo
lo cual depende de tener una letra de unidad.Pero las rutas UNC y las múltiples unidades de red asignadas al mismo dispositivo físico en un servidor añaden algunas complicaciones.Por ejemplo, estas 3 rutas apuntan a la misma carpeta en el mismo 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\)
En última instancia, mi objetivo es tomar estos múltiples caminos e informar la cantidad de espacio libre y utilizado en el disco en cada dispositivo.Quiero combinar estas 3 rutas en un solo elemento del informe y no en 3 elementos separados.
¿Existe alguna API de Windows que pueda ayudar a encontrar esta información dada una ruta completa arbitraria?
Solución
Esta llamada API de Win debería brindarle lo que necesita con respecto al espacio en disco
GetDiskFreeSpaceEx
http://msdn.microsoft.com/en-us/library/aa364937(VS.85).aspx
Además, para determinar si las tres asignaciones son todas del mismo disco físico, realice una llamada a
GetVolumeInformation
y compare los números de serie del volumen devuelto
http://msdn.microsoft.com/en-us/library/aa364993(VS.85).aspx