LARGE_INTEGER et GetDiskFreeSpaceEx()

Signaler
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
-
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
-
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 ?
A voir également:

14 réponses

Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
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 ?
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
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 ?
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
Ok j'ai trouvé, liTotalSpace.QuadPart>>20 fonctionne très bien :) . Cependant si quelqu'un peut m'éclairé sur l'utilisation de ce type.
Messages postés
746
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 mai 2007
10
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.
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
nction , fonctionne très bien pour les disque dur, mais pas pour les cdrom.
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
3
Salut,

Regarde bien: LARGE_INTEGER n'est pas une structure mais une union, en fait.
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
Oui dans lequelle il y à des structure. Quelqu'un sait-il comment récupérer la taille d'un CDROM ?
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
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
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
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.
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
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
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
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.
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
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 ?
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
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
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
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.