Sujet: info partition en .net
24/06/2009 @ 14:44:26: Altar: info partition en .net
Yop,

J'essaye de récupérer les informations (taille, espace libre, ...) d'une partition ntfs sur un HDD en .net.

Cette partition est montée dans un sous-répertoire d'une autre partition ntfs (mounted volume) et la classe DriveInfo me retourne les informations de la racine.

Qqun a une idée ? Je peux faire une interop s'il faut utiliser du code natif.

Merchi bien :ocube:
25/06/2009 @ 09:29:55: Altar: info partition en .net
Vous ne comprennez pas ma question ou vous ne connaissez pas la réponse ? :ocube:

Ce silence m'intrigue :ocube:
25/06/2009 @ 09:53:50: Jean-Christophe: info partition en .net
J'ai compris la question, mais je ne fait pas de .NET :spamafote:
25/06/2009 @ 10:15:44: blietaer: info partition en .net
Idem.
Remplace tes mots par ext3, linux et C/C++ stp.
25/06/2009 @ 11:36:27: Altar: info partition en .net
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 :ocube:
25/06/2009 @ 11:48:31: kortenberg: info partition en .net
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 :ocube:
Voilà! c'est ça!

Je connais le .net mais pour du dev web.
Je ne savais même pas qu'on pouvait monter un drv dans un sous-répertoire.
Je n'ai pas le temps de faire joujou.

Pour toutes ces raisons, je ne peux pas te répondre utilement.
25/06/2009 @ 11:53:02: philfr: info partition en .net

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 ? :grin:
25/06/2009 @ 11:59:47: Dr_Dan: info partition en .net
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 :ocube:


Bah non, il va te jeter et engager quelqu'un qui connais la réponse.. :ddr555:

:neowen:
25/06/2009 @ 12:06:37: rfr: info partition en .net
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.
25/06/2009 @ 12:11:47: blietaer: info partition en .net
(pardon pour la petite blague, je sais comme l'humour nerd est penible quand on attend une reponse constructive)
25/06/2009 @ 12:17:25: Altar: info partition en .net


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 ? :grin:


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 :ocube:
25/06/2009 @ 12:27:19: Altar: info partition en .net
rfr > encore mieux \o/
mille merci :prosterne:
25/06/2009 @ 13:03:55: philfr: info partition en .net
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...)
25/06/2009 @ 15:59:39: Altar: info partition en .net
Ca marche :smile: 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);
25/06/2009 @ 16:01:53: rfr: info partition en .net
rfr > encore mieux \o/
mille merci :prosterne:


De rien, 30 secondes de google :banzai:
25/06/2009 @ 20:22:25: antp: info partition en .net


Pourtant c'est dans les specs ntfs depuis windows xp (soit 2001).


Ça marchait déjà en Windows 2000 il me semble
Retour