IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

A quelle unité un ULONGLONG correspond il pour la taille d'un espace disque?


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Par défaut A quelle unité un ULONGLONG correspond il pour la taille d'un espace disque?
    Bonjour,

    J'ai une petite question toute bete car je n'arrive pas à savoir dans la documentation où cette information est précisée.
    J'ai utilisé la fonction GetDiskFreeSpaceEx(name, &freeTmp, &totalTmp, &usedTmp)) pour connaitre l'espace sur des disques. Ceci me donne une valeur qui correpond à un ULONGLONG lorsque je récupére l'espace libre par exemple :
    freeTmp.QuadPart;

    Je voudrais convertir cette valeur en GigaBit, mais je ne sais pas à l'origine en quelle unité est fournie ce résultat?

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    C'est pourtant indiqué dans l'aide: C'est directement la taille en octets.

    Donc, 2^-30 Gigaoctet, ce qui signifie 2^-27 Gigabit...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 340
    Par défaut
    il doit y avoir une erreur de signe. 2^-30 est tres petit Je pense que c'est plutot 2^32 si un long long est code sur 4 octets. Ceci est vrai sur les x86. Par contre, sur les processeurs 64 bits, avec gcc (avec mingw), un long long est code sur 64 bits. Je ne sais pas ce qu'il en est avec vc, ni si un ULONGLONG est forcement code sur 4 octets ou non.

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Non, il n'y a pas d'erreur de signe:
    • 1 octet = 2^-30 gigaoctet.
    • 1 gigaoctet = 2^30 octets.

    PS: Un ULONGLONG fait 64 bits, ce qui donne 8 octets, pas 4.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Par défaut
    En fait, je ne comprends pas (peu être mon compilateur ne supporte pas de prendre directement QuadPart)?

    Je récupére l'espace disque (C: par exemple) avec ce code très simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (0 != GetDiskFreeSpaceEx(name, &freeTmp, &totalTmp, &usedTmp)) {
    	free = (unsigned long) freeTmp.QuadPart;
    	total = (unsigned long) totalTmp.QuadPart;
    	used = (unsigned long) usedTmp.QuadPart;
    }
    J'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    free="2976841728" total="2647138304" used="2976841728"
    Sachant que dans les propriétés de Windows, j'ai un disque dur de 500 giga avec 11,6 giga utilisé. Je trouve le résultat déjà très louche

    Ensuite, j'utilise votre conversion :
    Et voilà ce que j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    free="3525574656" total="1190920192" used="3525574656"
    C'est pas du tout comme dans les propriétés de Windows en Giga...?

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Un unsigned long ne monte pas plus loin que 4Go.
    Tu dois travailler en unsigned long long (ou en unsigned __int64 si ton compilo ne connais pas long long) pour garder des tailles correctes...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Par défaut
    Bonjour,

    free*(2^(-30))
    En C (ou langages dérivés), l'opérateur '^' est l'opérateur du OU Exclusif (XOR)...

    Une possibilité :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    unsigned long freeGB = 0; /* Giga octets de libre */
    unsigned long FreeMB = 0;/* Méga octets de libre */
    
    if (0 != GetDiskFreeSpaceEx(name, &freeTmp, &totalTmp, &usedTmp)) {
    	freeGB = (unsigned long) (freeTmp.QuadPart / (1024 * 1024 * 1024)); 
    	freeMB = (unsigned long) ((freeTmp.QuadPart / (1024 * 1024));
    
    	/* ... */
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/09/2011, 14h20
  2. Quelle plateforme de developpement utilisez-vous pour j2ee.
    Par zeavan dans le forum EDI et Outils pour Java
    Réponses: 4
    Dernier message: 09/05/2006, 16h27
  3. Quelle BDD gratuite ou autre choisir pour un petit soft ?
    Par Cédric_07 dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 05/05/2006, 17h11
  4. Réponses: 6
    Dernier message: 28/04/2006, 09h16
  5. Quelles définitions pour la taille d'une base
    Par Christophe Charron dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 15/09/2005, 07h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo