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

C++ Discussion :

Écrire directement dans l'adresse du disque dur sous Windows 7


Sujet :

C++

  1. #1
    Débutant
    Homme Profil pro
    Ubuntu
    Inscrit en
    Janvier 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ubuntu

    Informations forums :
    Inscription : Janvier 2017
    Messages : 69
    Points : 0
    Points
    0
    Par défaut Écrire directement dans l'adresse du disque dur sous Windows 7
    Bonjour,

    je cherche à écrire directement à une adresse bien précise dans le disque dur comment pourrais-je m'y prendre sous Windows 7 ?

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    A priori, tu ne veux pas le faire.
    Du moins, pas à moins d'avoir une très bonne raison de le faire.

    Tu peux écrire à un endroit bien spécifique du système de fichier, mais vouloir contourner celui-ci, c'est prendre énormément de risques.

    Windows pourrait devenir incapable de lire le fichier qui se trouve être écrit cet endroit là, voire si c'est un dossier, l'intégralité de son contenu.
    Pire, parce qu'il n'arriverait pas à lire le dossier, il pourrait cesser de savoir que les fichiers à l'intérieur existent, et écrire par dessus.

    Pire encore, si tu écris dans la zone de fonctionnement du système de fichier, le disque dur entier pourrait ne plus être vu comme formatté.
    Dans le cas ultimement tragique où tu écrirais dans le secteur racine, ton disque pourrait devenir totalement inutilisable, voire paralyser l'ordinateur complet (si c'est le disque de boot).

    D'où ma question:
    Pour quel usage aurais-tu besoin d'une telle chose?
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Débutant
    Homme Profil pro
    Ubuntu
    Inscrit en
    Janvier 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ubuntu

    Informations forums :
    Inscription : Janvier 2017
    Messages : 69
    Points : 0
    Points
    0
    Par défaut
    Merci pour ta réponse, je dois simuler un programme qui nécessite beaucoup de RAM, n'en ayant pas assez je préfère assigner tout le rôle de RAM à mon disque dur. Le programme en question va massivement aller d'adresse en adresse, je ne peux donc pas écrire dans un fichier car le rechercher d'abord dans la table prendrait énormément de temps en plus de celui d'accès au disque dur.

  4. #4
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Bien, c'est beaucoup plus raisonnable. Tu ne veux pas écrire à une adresse arbitraire du disque, mais tu veux juste un "fichier à accès direct"

    Regarde du cote de mmap().
    C'est la fonction système linux qui permet de faire précisément ce genre de chose.

    Pour windows, je te laisse chercher dans la doc système qui va bien (je ne sais où dans la MSDN)

    PS: je trouve amusant de te voir, toi spécifiquement, UbuntuHuit, chercher de l'aide pour WindowsSept
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  5. #5
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 437
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 437
    Points : 43 076
    Points
    43 076
    Par défaut
    Écrire directement dans l'adresse du disque dur sous Windows 7
    l'OS ne te laissera pas faire.

    préfère assigner tout le rôle de RAM à mon disque dur.
    ça s’appelle la mémoire virtuelle.

    https://msdn.microsoft.com/fr-fr/lib...(v=vs.85).aspx
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  6. #6
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Pour avoir un accès fichier qui ressemble à un accès mémoire, sous windows, c'est CreateFileMapping + MapViewOfFile. C'est l'équivalent du mmap sous linux.
    Et s'il y a des moyens d'avoir un accès bas niveau au disque dur (par exemple pour écrire un défragmenteur de disque), ça ne m'a pas l'air nécessaire du tout ici.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  7. #7
    Débutant
    Homme Profil pro
    Ubuntu
    Inscrit en
    Janvier 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ubuntu

    Informations forums :
    Inscription : Janvier 2017
    Messages : 69
    Points : 0
    Points
    0
    Par défaut
    Écrire et lire à une adresse dans un secteur unique en bas niveau c'est exactement ce que je veux faire et le programme est en c++ je ne l'avais pas dit.

  8. #8
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 437
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 437
    Points : 43 076
    Points
    43 076
    Par défaut
    Je programmes pas sous Windows mais je pense que tu devrais pouvoir t'en sortir avec ça :

    https://support.microsoft.com/en-us/...ss-under-win32
    https://msdn.microsoft.com/fr-fr/lib...(v=vs.85).aspx

    Attention : super dangereux.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  9. #9
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Points : 937
    Points
    937
    Par défaut
    Ubuntuhuit, je suis curieux de savoir si tu as trouvé une solution.
    Et, accessoirement, la motivation de ta demande.

    Pour compléter les autres réponses, il existe une petite bibliothèque qui fait du file mapping. C'est standard, (très) performant, et utilise les fonctionnalités de l'OS: LMDB
    Ici le code:
    https://github.com/LMDB/lmdb
    et ici un excellent fork:
    https://github.com/ReOpen/libmdbx

  10. #10
    Débutant
    Homme Profil pro
    Ubuntu
    Inscrit en
    Janvier 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ubuntu

    Informations forums :
    Inscription : Janvier 2017
    Messages : 69
    Points : 0
    Points
    0
    Par défaut
    Les réponses postés précédemment ont pu m'aider, j'en avais besoin car je devais simuler un logiciel qui réellement fonctionne avec 12go de RAM que je n'avais pas. Dans ces 12go de RAM simulés avec le disque dur le logiciel passe massivement d'un unique secteur à l'autre, où chaque secteur a une adresse aléatoire.

Discussions similaires

  1. Vérifer l'état d'un disque dur sous Linux.
    Par troumad dans le forum Matériel
    Réponses: 10
    Dernier message: 03/03/2017, 17h43
  2. Réponses: 7
    Dernier message: 14/11/2015, 01h09
  3. Perte du disque dur sous Windows 7
    Par lucky06 dans le forum Windows 7
    Réponses: 7
    Dernier message: 08/01/2012, 05h54
  4. Problème répartition disque dur sous Windows 7
    Par razrman dans le forum Windows 7
    Réponses: 5
    Dernier message: 01/08/2010, 17h10
  5. Formatage d'un disque dur sous Windows
    Par Rainmaker dans le forum x86 32-bits / 64-bits
    Réponses: 12
    Dernier message: 21/01/2005, 00h24

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