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 :

Acces a la memoire video en ecriture


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Par défaut Acces a la memoire video en ecriture
    bonjour,
    Voila j'ai un problème j'ai ecrit un code qui permet d'écrire dans la mémoire vidéo (adresse 0xB800 0000)une chaine de caractère , je l'ai déjà fait sous un vieux log qui ne nomme borland (un des premier ) je l'ai refait sous dev c++ et la surprise il compile et au moment de l'exe. il me plante avec le fameux message rapport d'erreur pouvez vous me dire ce qui merde ?

    Voici mon code : ( sachant que je veux qui fonctionne sous dev )

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #include <conio.h>
    #include <windows.h>
    #define ECR ((short far*)0xB8000000) //Constante ECR avec l'@base mem video
    #define PutChar(X,Y,car) (*(ECR+80*Y+X)=car) //macro PutChar
    #define GetChar(X,Y) (*(ECR+80*Y+X)) //macro GetChar
     
    //Couleur de fond
    #define F_ROUGE 0x4000
    #define F_VERT 0x2000
    #define F_BLEU 0x1000
     
    //Couleur d'un caractŠre
    #define C_ROUGE 0x0400
    #define C_VERT 0x0200
    #define C_BLEU 0x0100
     
    //spécial
    #define CLIGNE 0x8000
    #define BRILLE 0x0800
     
    int main()
    {
      short toto,i=0;
      char tab[8]={"coucou"};
      while(i<8)
      {
       PutChar(8+i,13,tab[i]|(C_ROUGE|CLIGNE)); //afficher en 8,13
       toto=(GetChar(8+i,13));  //lire en 8,13
       PutChar(13+i,23,toto); //ecrire le contenu de 8,13 en 13,23
       i++;
      }
     
      //getch();
      system("pause");
    return 0;
    }

    merci
    over
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    L'acces direct a la memoire video est interdit dans les OS modernes. Desormais, on communique avec le driver.

  3. #3
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Par défaut
    Dans ce cas comment se fait t'il au bahut sous Xp j'y arrive avec le premier borland ?
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

  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 Overcrash3181 Voir le message
    Dans ce cas comment se fait t'il au bahut sous Xp j'y arrive avec le premier borland ?
    Parce que XP supporte encore le mode 16-bit, et encore, ça dépend de la version. J'ai vu certaines choses fonctionner sous XP de base et ne plus fonctionner sous XP/SP1 ou XP/SP2...

    Sous Vista, il est clair que ça ne fonctionnera pas du tout.

  5. #5
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Citation Envoyé par Overcrash3181 Voir le message
    Dans ce cas comment se fait t'il au bahut sous Xp j'y arrive avec le premier borland ?
    Ce compilateur (borland) que tu as utilisé produit un exécutable (.exe) MS-DOS et non Windows, Dev-Cpp lui génère un exécutable (.exe) Windows. Les exécutables MS-DOS ne fonctionnent pas directement sous Windows XP, les deux systèmes étant différents. Ils peuvent cependant être émulés à l'aide d'une machine virtuelle. C'est ce qui se passe quand tu lances un exécutable MS-DOS sous Windows.

  6. #6
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Par défaut
    je viens d'apprendre par un de mes prof que on pouvait déverrouiller cette protection a l'aide d'une bibliothèque "direct I/O" pour pouvoir écrire sur cette adresse.

    Dans un premier temps j'aimerais utiliser cette bibliothèque mais ensuite j'aimerais si possible retranscrire le code pour a la final avoir que un .exe et qu'il soit transportable.

    voyez vous?

    alors avez vous des infos sur cette librairies ?

    Over
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

  7. #7
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 484
    Par défaut
    Citation Envoyé par Overcrash3181 Voir le message
    je viens d'apprendre par un de mes prof que on pouvait déverrouiller cette protection a l'aide d'une bibliothèque "direct I/O" pour pouvoir écrire sur cette adresse. Dans un premier temps j'aimerais utiliser cette bibliothèque mais ensuite j'aimerais si possible retranscrire le code pour a la final avoir que un .exe et qu'il soit transportable. voyez vous? alors avez vous des infos sur cette librairies ?
    N'utilise pas une bibliothèque pour contourner un problème sans le résoudre. Surtout pas si tu ne sais pas exactement ce qu'elle est censée faire !

    Si tu lèves les protections avec quelque chose d'aussi brutal, tu risques d'aller écrire à un endroit qui n'est plus du tout celui que tu crois et provoquer des catastrophes.

  8. #8
    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 Overcrash3181 Voir le message
    je viens d'apprendre par un de mes prof que on pouvait déverrouiller cette protection a l'aide d'une bibliothèque "direct I/O" pour pouvoir écrire sur cette adresse.
    Les I/O des x86 n'ont rien à voir avec la mémoire vidéo (pas du tout le même bus ni les mêmes instructions machines). Ca sert à accéder à des périphériques (contrôleurs d'IT, timers, uart etc.)

    A moins que ton métier soit 'programmeur de drivers' (si c'est le cas une sérieuse remise à niveau est à envisager), tu n'as pas à te préoccuper de la gestion directe du matériel. Le système est là pour ça (c'est très précisément un de ses rôles). Il fourni donc tout ce qu'il faut, comme Direct X (sous Windows), par exemple.



    Quel est ton but exact ?

  9. #9
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 484
    Par défaut
    Citation Envoyé par Overcrash3181 Voir le message
    bonjour, Voila j'ai un problème j'ai ecrit un code qui permet d'écrire dans la mémoire vidéo (adresse 0xB800 0000)une chaine de caractère , je l'ai déjà fait sous un vieux log qui ne nomme borland (un des premier ) je l'ai refait sous dev c++ et la surprise il compile et au moment de l'exe. il me plante avec le fameux message rapport d'erreur pouvez vous me dire ce qui merde ?
    Il faut que tu te renseignes sur ce qu'est le mode protégé : le système alloue des plages de mémoire aux différents processus et lorsqu'ils en sortent, c'est le micro-processeur lui-même qui interrompt le fautif en déclenchant une exception (les fameux segfaults).

    D'autre part, les segments ne fonctionnent plus du tout comme en mode réel (shift de 4 bits). À la place, la valeur qu'ils contiennent représente le numéro de la plage réservée.

    Enfin, il y a des chances que la mémoire vidéo elle-même ne se trouve plus à cet endroit. À l'époque des ordinateurs 8 et 16 bits, le matériel était encore suffisamment statique et rudimentaire pour que le constructeur lui-même lui alloue des plages fixes. Aujourd'hui, toutes les cartes vidéos fonctionnent différement (ne serait-ce que pour gagner en performance) et comme avec le bus PCI, tu peux brancher plusieurs cartes du même type, les plages de mémoire sont définies à l'initialisation de la carte.

    Si ton programme fonctionne encore sous XP, comme l'ont dit Melem et Emmanuel, c'est parce que le système émule le DOS en ré-établissant au mieux l'environnement de l'époque, et en rattrapant les exceptions du CPU pour aller reproduire lui-même l'effet escompté.

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

Discussions similaires

  1. acces a la memoire video
    Par duplo dans le forum Windows
    Réponses: 4
    Dernier message: 09/08/2007, 20h08
  2. Acces memoire video
    Par Mercenary Developer dans le forum C
    Réponses: 8
    Dernier message: 22/06/2007, 02h27
  3. calculer la memoire video disponible et le fps
    Par gaut dans le forum DirectX
    Réponses: 1
    Dernier message: 28/09/2006, 03h00
  4. Acces a la memoire cache L2
    Par yoloosis dans le forum C++
    Réponses: 12
    Dernier message: 12/07/2006, 22h43
  5. récupération de la taille de la memoire video!!
    Par fatmamed dans le forum C++
    Réponses: 1
    Dernier message: 21/01/2006, 09h50

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