Ottenere informazioni sul dispositivo fisico da un determinato percorso di file
Domanda
Supponi di avere un percorso completo per un file o una cartella accessibile sul sistema. Come posso ottenere una sorta di identificatore univoco per il dispositivo fisico su cui risiede effettivamente il file (o la cartella)?
Il mio primo tentativo è stato di usare System.IO.DriveInfo
che dipende dall'avere una lettera di unità. Ma i percorsi UNC e le unità di rete multiple associate allo stesso dispositivo fisico su un server aggiungono alcune complicazioni. Ad esempio, questi 3 percorsi puntano tutti alla stessa cartella sullo stesso 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\)
Alla fine il mio obiettivo è prendere questi percorsi multipli e segnalare la quantità di spazio su disco utilizzato e libero su ciascun dispositivo. Voglio combinare questi 3 percorsi in un singolo elemento nel rapporto e non 3 elementi separati.
C'è qualche API di Windows che può aiutare a trovare queste informazioni dato un percorso completo arbitrario?
Soluzione
Questa chiamata API Win dovrebbe fornirti ciò di cui hai bisogno per quanto riguarda lo spazio su disco
GetDiskFreeSpaceEx
http://msdn.microsoft.com/ it-it / library / aa364937 (VS.85) aspx
Inoltre, per determinare se i tre mapping sono tutti dallo stesso disco fisico, eseguire una chiamata a
GetVolumeInformation
e confronta i numeri di serie del volume restituito
http://msdn.microsoft.com/ it-it / library / aa364993 (VS.85) aspx