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.
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 :Envoyé par united4life
fopen()
fwrite()
fclose()
non pas de cette maniere mais plutot quelque chose du genre comme ce
je donne a la fonction les donnees que je veux enregistrer+le secteur et elle ecrit data dans ce secteur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 void ecrire(char data[],int secteur)
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 !
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).Envoyé par united4life
http://en.wikipedia.org/wiki/BIOS_call
Il faudrait préciser :Envoyé par united4life
- 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.
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.Envoyé par Franck.H
Bonsoir,
Les deux fonctions que tu proposes , ne sont pas du tout portablesCe que tu veux faire est ce qu'on appelle une écriture absolue. Sous DOS :Melem
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.!
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 .
Partager