Un probleme avec biosdisk [Résolu]

Signaler
Messages postés
212
Date d'inscription
dimanche 3 avril 2005
Statut
Membre
Dernière intervention
28 mai 2011
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
Salut!

J'essai d'ecrir un petit programme qui permet de lire un secteur d'un
disque. J'utilise la fonction biosdisk. Il n'y a aucun probleme avec
les disquettes mais avec le disque dur ca marche jamais il me retourne
l'erreur 128. Voila le code:


#include <stdio.h>

#include


typedef char BYTE;


void main()

{

    int i, rep=1;

    char buf[512];

   

   

    for (i=10; i && rep; i--) //essayer de lir 10 fois

    {

        rep = biosdisk(2, 0x80 ,0, 0, 1, 1, buf); \\Remplacer 0x80 par 0x0 pour la disquette

        printf("%d\n", rep);

    }

   

    if (rep) return -1;


    FILE *fd = fopen("boot.txt","wb");

    if (fd==NULL) return -1;


    fwrite(buf, 1, 512, fd);

    fclose(fd);


    system("pause");

}

j'espere que quelqu'un pourrai me corriger.

Peut etre c'est windows qui bloque la lecture.

Je voulais aussi savoir si on pouvai utiliser la fonction biosdisk pour
lire et ecrrire sur une clé USB et quels sont les parametres pour les
pistes et les secteurs.


Merci, @ +

7 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
CreateFile()
ReadFile() ou DeviceIoControl()
CloseHandle()

ciao...
BruNews, MVP VC++
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Il y a des exemples ici
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Et pourquoi 0x80?
Messages postés
193
Date d'inscription
mercredi 7 septembre 2005
Statut
Membre
Dernière intervention
8 juillet 2010

ma question va peut être vous paraitre bizare, voir même stupide, mais je me demandais juste ce qu'il falait changer quand on est sur le bios, (si le changement est necessaire ou pas)

Est-ce qu'un hello world pourrait fonctionner sans problème ? par exemple

PS:dsl goast_tu pour ma question dans ton topic mais je la trouvais peu importante pour prendre la place d'un nouveau topic, de plus mon niveau ne me permet pas de te répondre.

Pourra tu me pardonner ?
Messages postés
212
Date d'inscription
dimanche 3 avril 2005
Statut
Membre
Dernière intervention
28 mai 2011
2
baby3378 : la question n'est peut etre pas stupide mais en tout cas elle est mal posé. pas grave pour la question

Si tu voulais dir si c'était possible d'ecrire un programme "hellow
world" qui se lance sans le systeme d'exploitation comme par exemple
avec une disquette : la reponce est oui, mais il faut apprendre
l'assembleur car ecrir un code qui sera dans le secteur boot avec C est
+ dur voir impossible.


0x80 eh ben  bonne question mais c'est ce que j'ai trouvé sur un site il etait ecrit que :

0x0: pour la disquette A:

0x1: pour la disquette B:

0x80: pour disque C:

0x81: pour disque D:


je sais pas d'ou ca vien et si quelqu'un a unpeu  + de precision
sur cette fonction ou sur l'Int 13h de BIOS je serais gentil de les
poster ici
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
Sous Windows c'est API, bios.h est à virer.

ciao...
BruNews, MVP VC++
Messages postés
212
Date d'inscription
dimanche 3 avril 2005
Statut
Membre
Dernière intervention
28 mai 2011
2
Ok, alors quel API utiliser? et ou trouver l'information?


Merci