LARGE_INTEGER et GetDiskFreeSpaceEx()

deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 - 7 août 2006 à 14:43
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 - 7 août 2006 à 18:29
Bonjour à tous.

Voila je veu retrouver l'espace total et libre sur mes disque avec la fonction GetDiskFreeSpaceEx() . Déjà avant de l'utiliser j'ai remarqué qu'elle prenai en paramètre des types qui me sont inconnu , à savoir des LARGE_INTEGER . Bon je l'utilise tous de mm et les données renvoyé me paraissent correct . Mais voila je veu remettre en Mo et pas moyen de changer la valeur. J'ai tenté division et décalage de bits et j'ai chaque fois l'erreur , invalid operande to binary :s Alors que j'ai tjrs fait ça lol . exemple (liTotalFreeSpace >> 20) me donne la mm erreure (je sais qu'il faut ajouter 1 après , mais si déjà cela ne fonctionne pas ...) .

Quelqu'un peut-il m'éclairer ?

14 réponses

deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
7 août 2006 à 14:49
Bon je vien de me rendre conte que ce type est un type structuré, mais cela ne m'aide pas bcp sur sont utilisation :s . Quel membre je doit modifier alors ?
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
7 août 2006 à 14:53
Note  Your C compiler may support 64-bit integers natively . Bon bon c'est pas pour moi cette fonction . y en a t-il une autre qui pourrait me permettre de trouver ce que je veu ?
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
7 août 2006 à 15:02
Ok j'ai trouvé, liTotalSpace.QuadPart>>20 fonctionne très bien :) . Cependant si quelqu'un peut m'éclairé sur l'utilisation de ce type.
0
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
7 août 2006 à 15:14
Utilise un unsigned __int64 pour remplacer le LARGE_INTEGER si tu es sous Visual C++.

<hr size="2" width="100%" />Sachant qu'on peut toujours enlever une ligne à un programme, et que dans un programme il y a toujours un bug, un programme peut se résumer à une ligne avec un bug.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
7 août 2006 à 16:36
nction , fonctionne très bien pour les disque dur, mais pas pour les cdrom.
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
7 août 2006 à 17:39
Salut,

Regarde bien: LARGE_INTEGER n'est pas une structure mais une union, en fait.
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
7 août 2006 à 17:41
Oui dans lequelle il y à des structure. Quelqu'un sait-il comment récupérer la taille d'un CDROM ?
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
7 août 2006 à 17:54
LARGE_INTEGER li; <- C'est pour simuler du 64 bits

donc

li.LowPart <- Les bits de faible poid (les 32 permier bits)
li.HighPart <- Les bits de haut poid (les 32 dernier bits)

normalement, la taille d'un CD ne dépassera pas 4Go donc li.LowPart devrait faire l'affaire.

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution

http://programmationdebat.discutforum.com
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
7 août 2006 à 18:04
Ben non hélas, je les ai tous esseye pour la taille d'un lecteur cd et il m'envoie des taille faramineuse, très faramineuse mm.
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
7 août 2006 à 18:08
Pourtant moi ça fonctionne à merveille. J'ai un disque de 660 mo dans mon lecteur E. Je fais donc ceci:

ULARGE_INTEGER li, li1, li2;

GetDiskFreeSpaceEx("e:\", &li1, &li, &li2);

printf("0x%x\n", li.LowPart);

et ça écrit: 0x275DC800 qui est exactement la bonne taille.

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution

http://programmationdebat.discutforum.com
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
7 août 2006 à 18:15
Ben moi , si je reprend tes nom de variable, il m'affiche dans li l'espace disque utilisé :s qui est complètement faut mais qui est le mm que dans les propriétés.
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
7 août 2006 à 18:19
Je vien de testé avec un autre cd et cela fonctionne , mais je comprend pas pq. Ce pourrait-il que sur le cd que j'avai avant il y avait des fichier graver sous linux :s Penses-tu que c'est cela que n'allait pas? ou bien parce que c'était un RW ?
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
7 août 2006 à 18:23
Lequel est RW? Si c'est celui que tu as testé en second, il est fort probable que ça fonctionne car la taille maximal d'un CD W seulement, une fois gravé, devien le nombre de donnée incrit sur le disque. De toute façon, il est inutile de connaitre la taille maximal d'un CD W si il y a déjà des données incrite dessus :P

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution

http://programmationdebat.discutforum.com
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
7 août 2006 à 18:29
Je vien de tester avec un dvd rw, et cela fonctionne a merveille aussi. A croire que c'était parce que le 1er cd contenait des fichier gravé sous linux.
0
Rejoignez-nous