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 :

ecrire et lire sur disque dur


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 17
    Par défaut ecrire et lire sur disque dur
    je voudrais savoir s'il est possible d'ecrire sur un disque dur ou disquette grace a
    un programme en C si c'est oui comment le faire et grace a qu'elle fonction.
    MERCI.

  2. #2
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Citation Envoyé par united4life
    je voudrais savoir s'il est possible d'ecrire sur un disque dur ou disquette grace a
    un programme en C si c'est oui comment le faire et grace a qu'elle fonction.
    MERCI.
    Oui c'est possible :

    fopen()
    fwrite()
    fclose()

  3. #3
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 17
    Par défaut
    non pas de cette maniere mais plutot quelque chose du genre comme ce
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void ecrire(char data[],int secteur)
    je donne a la fonction les donnees que je veux enregistrer+le secteur et elle ecrit data dans ce secteur.

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Il me semble que dans ton cas il te faut un accès bas niveau au périphérique ce que les systèmes évolués comme Windows, Linux (et autres unixoïdes), etc... ne te permettent pas d'avoir car il faut tout de même un minimum de protection et ceci est plutôt géré par le système sous-jacent.

    Je peut bien sûr me tromper mais bon, c'est mon avis d'après mon expérience.
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 17
    Par défaut
    c'est possible de la realiser en assembleur et c'est ce que j'ai fait mais malheuresement c'est en assembleur et pas en C je voudrais pas utiliser les fopen et companie.

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par united4life
    c'est possible de la realiser en assembleur et c'est ce que j'ai fait mais malheuresement c'est en assembleur et pas en C je voudrais pas utiliser les fopen et companie.
    Tu peux faire ça en mode réel sur un PC avec les fonctions du BIOS (INT 13h).

    http://en.wikipedia.org/wiki/BIOS_call

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Citation Envoyé par united4life
    je voudrais savoir s'il est possible d'ecrire sur un disque dur ou disquette
    Il faudrait préciser :
    • le système sur lequel cela doit fonctionner ;
    • si tu veux écrire sur un disque physique (ex. : le disque maître du premier contrôleur IDE) ou sur un volume logique (ex. : le volume "C:" sous Windows ou la partition N de tel disque sous Linux).

    Par exemple, sous Windows tu peux utiliser CreateFile() pour ouvrir "\\.\PhysicalDrive0" (pour un disque physique) ou "\\.\C:" (pour un disque logique).
    Sous linux, tu peux ouvrir le périphérique associé à ce que tu veux ("/dev/hda" pour le disque maître du premier contrôleur IDE, "/dev/hda1" pour la première partition sur ce disque, etc).
    Evidemment, il faut être administrateur dans les deux cas.
    Sous Windows 9x, c'est un poil plus compliqué : il faut passer par le périphérique "\\.\vwin32" pour appeler des fonctions du BIOS.
    Sous DOS, il suffit de passer par le BIOS.
    Citation Envoyé par Franck.H
    Il me semble que dans ton cas il te faut un accès bas niveau au périphérique ce que les systèmes évolués comme Windows, Linux (et autres unixoïdes), etc... ne te permettent pas d'avoir car il faut tout de même un minimum de protection et ceci est plutôt géré par le système sous-jacent. [...]
    Oui et non. Certes, avoir un "accès bas niveau au périphérique" n'est théoriquement pas permis par les systèmes comme Windows et Linux mais il n'est pas nécessaire d'avoir un "accès bas niveau au périphérique" pour écrire "directement" sur un disque puisque ces mêmes systèmes fournissent un mécanisme d'abstraction qui permet d'accéder à ces périphériques (à peu près) comme on accèderait à des fichiers.

  8. #8
    Membre confirmé Avatar de Dev-FX
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 94
    Par défaut
    Bonsoir ,

    Melem
    Ce que tu veux faire est ce qu'on appelle une écriture absolue. Sous DOS :
    Code :

    int abswrite(int drive, int nsectors, long lsector, void *buffer);

    Avec drive 0 pour A:, 1 pour B:, etc.
    Prototype dans dos.h
    Pour faire une lecture absolue : abswrite() bien sur.
    Les deux fonctions que tu proposes , ne sont pas du tout portables !
    Le must , c'est une fonction qui marche sous Windows et Linux .
    Il existe d'autres fonctions (par exemples dans bios.h) , mais le probleme de portabilité persiste .
    Utiliser les interruptions 25h et 26h n'est pas evidant sous Windows .
    C'est rare qu'il vous repond favorablement si tu veux modifier la valeur de DS.
    Sous Linux, la syntaxe de l'assembleur AT&T est compliqué !
    Merci .

Discussions similaires

  1. [Débutant] Ecrire sur disque dur avec int 13h
    Par bregolhen dans le forum Assembleur
    Réponses: 5
    Dernier message: 14/04/2006, 15h06
  2. Réponses: 4
    Dernier message: 18/01/2006, 09h49
  3. Le miroring Sur disque dur S-ATA
    Par ecoinfo dans le forum Composants
    Réponses: 1
    Dernier message: 25/10/2005, 10h02
  4. Données perdues sur disque dur esclave ?
    Par maadadi dans le forum Composants
    Réponses: 11
    Dernier message: 18/10/2005, 20h51
  5. [Espace perdue sur disque dur]
    Par Abdul dans le forum Windows XP
    Réponses: 19
    Dernier message: 26/06/2005, 14h50

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