Interruption systeme sousDevC++

Résolu
Ultimate_VersuS Messages postés 14 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 11 août 2006 - 7 oct. 2005 à 19:22
cs_eRoZion Messages postés 241 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 octobre 2007 - 10 oct. 2005 à 07:27
'Soir,

voila 30mn que je recherche cette info sur le site, sans succès...

Si un post existe il n'est pas très accessible (et biensûr désolé de "double-poster") .

Je cherche la commande pour lancer une interruption système en C++,

je suis sous DevC++. Quelqu'un a une idée?

18 réponses

Ultimate_VersuS Messages postés 14 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 11 août 2006
9 oct. 2005 à 14:22
J'aimerai bien, sauf qu'apparement il n'y a pas d'implentation d'IRQ

sous C++ (je sens que je vais envoyer un mail à Bjarne Stroustrup).

Ceci dis je vais essayer une implémentation en ASM, bien que ce

ne sois pas ce que je voulais au départ...
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 oct. 2005 à 19:38
Sous Windows on ne touche pas aux interruptions, se servir de API, SendInput() par exemple.

ciao...
BruNews, MVP VC++
0
Ultimate_VersuS Messages postés 14 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 11 août 2006
7 oct. 2005 à 21:18
Heu, sous windows (sous pascal) on peut acceder au IRQ sans aucun

problème. J'ai une librairie complète en pascal et je voudrais la refaire

en C++.

Il n'existe pas de commande C++ pour les interruptions?
0
cs_eRoZion Messages postés 241 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 octobre 2007 1
8 oct. 2005 à 03:03
C'est du C en 16 bits :







#include <dos.h>



union
REGS regs;



regs.h.REGISTRE=X; /* ex: reg.h.ax=1; */



int86( NUMERO_INTERRUPTION, &regs, &regs); /* ex: int86( 0x10, &regs, &regs) */



Est-ce que c'est ce que tu cherches ?




eRoZion
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_eRoZion Messages postés 241 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 octobre 2007 1
8 oct. 2005 à 05:49
NB: Tu peux également le faire d'une autre façon, à savoir en incluant
de l'asm dans ton code, ce qui t'éviterait d'avoir à inclure dos.h



eRoZion
0
Ultimate_VersuS Messages postés 14 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 11 août 2006
8 oct. 2005 à 13:37
Heu, non je connais déjà, et ça ne vas pas pour ce que je veut faire.

D'autant plus que c'est du C ça.

Je cherche la commande qui appelle une interruption système en C++.

J'aimerai éviter d'utiliser l'asm (mais je sens que ça vas finir comme ça...).

Il n'existe pas de commande IRQ sous C++?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 oct. 2005 à 13:45
Faudra mettre une petite source démo quand sera au point appels direct IRQ sous win32 en user mode suis impatient de voir cela.

ciao...
BruNews, MVP VC++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
8 oct. 2005 à 14:06
Il est possible d'utiliser les interruptions sous XP, c'est juste que le programme s'exécute en mode virtuel
0
Ultimate_VersuS Messages postés 14 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 11 août 2006
8 oct. 2005 à 14:14
Merci beaucoup pour vos remarques pertinantes.

BruNews: Je n'ai jamais parlé du mode uilisateur. Heureusement

sous Microsoft Windows il existe plusieurs mode...

Si vous connaissez la réponse merci de me l'indiquer.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 oct. 2005 à 14:24
Windows n'utilise que 2 niveaux, Ring0 pour kernel mode (noyau et drivers) et Ring3 pour l'user mode.

ciao...
BruNews, MVP VC++
0
Ultimate_VersuS Messages postés 14 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 11 août 2006
8 oct. 2005 à 14:28
Donc si j'utilise pas le user mode j'utilise alors ....
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
8 oct. 2005 à 14:33
La différence entre mode protégé/virtuel, elle correspond à quoi?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 oct. 2005 à 14:44
Si pas user mode alors on fait un driver et là oui que plus de prob pour toucher aux interruptions.

vecchio > je pense que tu parles du sous system DOS émulé sous Windows.

ciao...
BruNews, MVP VC++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
8 oct. 2005 à 14:52
oui je parle de ca, celui la permet bien d'utiliser les interruptions, au moins certaines d'entre elles
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 oct. 2005 à 15:01
Seulement une toute petite partie, ce qui touche aux points vitaux pour le system comme les accès direct aux disques etc... est banni et sanctionné par une injurebox.

ciao...
BruNews, MVP VC++
0
Ultimate_VersuS Messages postés 14 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 11 août 2006
8 oct. 2005 à 15:26
vecchio56: La difference entre virtuel et protégé.

Virtuel, c'es ta mémoire, 4Go théorique, on change le mode d'adressage

de la mémoire (enfin c'est Win qui le fait).

Protégé, Win gère un module de protection qui permet à une application

de ne théoriquement pas débordé sur sa voisine (un peu comme des

cartons empilés les uns à côtés des autres, win vérifie que peronne ne

fait de trous dans les cartons pour passé de l'un à l'autre).

Virtuel et protégé vont un peu ensemble, l'un agrandi la mémoire,

l'autre surveille que l'agrandissement ne génère pas de problème.

Pour les IRQ avant c'est dos qui gérait (IRQ 21), windows était installé

sur dos. Maintenant dos n'existe plus ( :'( ) et 'est windows qui fait

une émulation de feu dos (comme le disais BruNews).

Maintenant c'est win qui gère les IRQ et interdit formellement l'acces

à celle-ci aux users. C'est pour ça que certains jeux ne fonctionnent

qu'en mode compatibilité (émulation surveillé d'IRQ).

Sauf si tu n'as pas des privilèges users (il existe pleins de méthode

pour avoir des privilèges système).

Enfin bref, donc ça n'existe pas sous C++?
0
cs_eRoZion Messages postés 241 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 octobre 2007 1
9 oct. 2005 à 14:02
Je serais content de voir le code si tu y parviens, juste pour toucher aux irq (pas nécessairement celui pour passer en ring0).



Tiens-nous au courant. :)



eRoZion
0
cs_eRoZion Messages postés 241 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 octobre 2007 1
10 oct. 2005 à 07:27
Je n'en suis pas certain, mais je pense qu'il n'y a que ça a faire.

Meme en asm inliné, cette fonction peut être très intéressante.



Je suis toujours intéressé au cas où éventuellement tu trouverais. :)



eRoZion
0
Rejoignez-nous