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 :

extensions d'une interruption du X86


Sujet :

C

  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 65
    Par défaut extensions d'une interruption du X86
    bonjour tout le monde

    pouvez vous m'aider par quelle fonction standard du langage C que je dois appeller et qui me permet d'acceder au extensions (services) d'une interruptions d'une machine INTEL X86 .

    merci d'avance

  2. #2
    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 laracroft87 Voir le message
    pouvez vous m'aider par quelle fonction standard du langage C que je dois appeller et qui me permet d'acceder au extensions (services) d'une interruptions d'une machine INTEL X86 .
    Aucune fonction standard bien évidemment (comment être standard et spécifique à un processeur ? Un peu de bon sens...)

    Contrairement à ce qui se faisait dans les années 90, ce n'est plus à la portée d'une application utilisateur sur PC tournant sous un système actuel (Windows, Linux, Mac).

    Ca peut se faire en mode noyau[1], mais ce n'est pas pour les débutants.

    Tu veux faire quoi exactement et dans quel cadre ?

    ------------
    [1] ou en mode BOOT avant le basculement en mode protégé...

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 65
    Par défaut
    resalut

    oui je sais que si la fonction standard existe,elle ne vas pas etre spécifique pour le processeur X86.

    bref,moi j'ai envie de réaliser un programme C qui me permet d'avoir la capacité du disque dur en untilisant les interruptions ; sachant bien que les extentions de l'interruption 13 de la machine intel X86 donnent :le nombre de cylindre,le nombre de pistes,....

    et a l'aide de toutes ces informations je pourrais calculer la capacité du disque dur

    le probléme réside dans : comment je pourrais appeller une extension d'une interruption avec le langage C

    et merci de me répondre .

  4. #4
    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 laracroft87 Voir le message
    bref,moi j'ai envie de réaliser un programme C qui me permet d'avoir la capacité du disque dur en untilisant les interruptions ; sachant bien que les extentions de l'interruption 13 de la machine intel X86 donnent :le nombre de cylindre,le nombre de pistes,....
    C'est pas possible dans une application 32-bit. Si tu as un vieux complateur 16-bit comme Turbo C, il y a ce qu'il faut : int86x() déclarée dans <dos.h>. (mais ton application sera 16-bit. Ca marche encore sous Windows XP, mais pas sous Vista).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    #include <dos.h>
    #include <stdio.h>
     
    int main(void)
    {
       unsigned char (*data)[512]=NULL;
       union REGS regs = {0};
       struct SREGS xregs ={0};
       regs.h.ah = 0x25;
       regs.h.dl=0x80; /* drive 0 */
       int86x (0x13, &regs, &regs, &xregs);
     
       data = MK_FP (xregs.es, regs.x.bx);
     
       return 0;
    }
    Reste plus qu'à analyser le tableau data...

    Sinon, en 32-bit, il faut utiliser une fonction système de l'API Win32.

    MSDN est ton amie.

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

Discussions similaires

  1. la taille extensible d'une ligne dans une table
    Par Platon93 dans le forum Access
    Réponses: 9
    Dernier message: 30/11/2006, 16h08
  2. Réponses: 2
    Dernier message: 28/08/2006, 18h17
  3. Lancement appli à partir d'extension dans une URL dans IE
    Par Sniper94-2 dans le forum Windows
    Réponses: 3
    Dernier message: 03/11/2005, 17h55
  4. Détournement d'une interruption
    Par Invité dans le forum Assembleur
    Réponses: 18
    Dernier message: 16/02/2005, 13h49
  5. Réponses: 2
    Dernier message: 14/07/2004, 16h55

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