Poster une réponse à un sujet: info partition en .net
Attention, ce sujet est un sujet ancien (5624 jours sans réponse)
antp
Ça marchait déjà en Windows 2000 il me semble
rfr
Altar
Ca marche Pour récupérer la taille & l'espace libre un petit exemple :
[DllImport("kernel32.dll")]
static extern bool GetVolumeNameForVolumeMountPoint(string lpszVolumeMountPoint, [Out] StringBuilder lpszVolumeName, uint cchBufferLength);
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetDiskFreeSpaceEx(string lpDirectoryName, out ulong lpFreeBytesAvailable, out ulong lpTotalNumberOfBytes, out ulong lpTotalNumberOfFreeBytes);
StringBuilder sb = new StringBuilder(200);
GetVolumeNameForVolumeMountPoint("c:\\", sb, (uint)sb.Capacity);
ulong FreeBytesAvailable, TotalNumberOfBytes, TotalNumberOfFreeBytes;
GetDiskFreeSpaceEx(sb.ToString(), out FreeBytesAvailable, out TotalNumberOfBytes, out TotalNumberOfFreeBytes);
[DllImport("kernel32.dll")]
static extern bool GetVolumeNameForVolumeMountPoint(string lpszVolumeMountPoint, [Out] StringBuilder lpszVolumeName, uint cchBufferLength);
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetDiskFreeSpaceEx(string lpDirectoryName, out ulong lpFreeBytesAvailable, out ulong lpTotalNumberOfBytes, out ulong lpTotalNumberOfFreeBytes);
StringBuilder sb = new StringBuilder(200);
GetVolumeNameForVolumeMountPoint("c:\\", sb, (uint)sb.Capacity);
ulong FreeBytesAvailable, TotalNumberOfBytes, TotalNumberOfFreeBytes;
GetDiskFreeSpaceEx(sb.ToString(), out FreeBytesAvailable, out TotalNumberOfBytes, out TotalNumberOfFreeBytes);
philfr
En plus, la machine devrait avoir plus de 24 drives branchés simultanément sous peu xD
C'était la raison de mon clin d'oeil à cette aberration d'un autre temps (CP/M...)
Altar
rfr > encore mieux \o/
mille merci
mille merci
Altar
Sans doute que .net ne le savait pas non plus, et donc DriveInfo est incapable de savoir ce qu'on lui veut.
Tu n'as plus qu'à attribuer un nom de drive à ta partition. "F:" peut-être ?
Pourtant c'est dans les specs ntfs depuis windows xp (soit 2001).
C'est ce qui est fait pour le moment mais la machine à une centaine de drives externes en rotation et ça devient le bordel à gérer xD
En plus, la machine devrait avoir plus de 24 drives branchés simultanément sous peu xD
edit : j'ai trouvé une solution en passant par WMI
blietaer
(pardon pour la petite blague, je sais comme l'humour nerd est penible quand on attend une reponse constructive)
rfr
Le début de ta quête se trouve ici: http://msdn.microsoft.com/en-us/library/aa364994(VS.85).aspx
Après ça, tu auras le nom du volume et tu pourras utiliser le reste de l'API Win32.
Après ça, tu auras le nom du volume et tu pourras utiliser le reste de l'API Win32.
Dr_Dan
bli > oui je vais expliquer à mon client qu'il doit jetter ses centaines de serveurs 2k8 pour passer à linux, virer ses admin sys windows, déstabiliser sa prod pendant plusieurs mois, tout ça pour gagner 4h de dev sur un soft mineur
Bah non, il va te jeter et engager quelqu'un qui connais la réponse..
philfr
Je ne savais même pas qu'on pouvait monter un drv dans un sous-répertoire.
Sans doute que .net ne le savait pas non plus, et donc DriveInfo est incapable de savoir ce qu'on lui veut.
Tu n'as plus qu'à attribuer un nom de drive à ta partition. "F:" peut-être ?