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 :

[C++] Probleme avec code qui compile


Sujet :

C++

  1. #1
    Membre régulier Avatar de Nono Sto
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 350
    Points : 74
    Points
    74
    Par défaut [C++] Probleme avec code qui compile
    Hello world

    Je reprend un vieux projet que je dois coder sous visual C++ 2003 car il s'agit d'une veilles archi.
    Lorsque je compile ce code rien n'est signalé ni erreur ni avertissement, par contre quand je le lance sa freeze. Voici le bout de code qui pose problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    KIRQL(NTAPI *KeRaiseIrqlToDpcLevelFix)(void) = &KeRaiseIrqlToDpcLevel; //cette ligne a une erreur de syntaxe mais ne fait pas freeze le PC
     
    //VOID(*KfLowerIrqlFix)( 	KIRQL  	NewIrql	) 	 = &KfLowerIrql;
     
    //les 2 lignes suivantes ont une erreur de syntaxe mais la première freeze le PC
     
    VOID(__fastcall *KfLowerIrqlFix)( KIRQL NewIrql ) = &KfLowerIrql;
    KIRQL l = KeRaiseIrqlToDpcLevelFix();
    Lorsque je met un espion dessus j'ai un message d'erreur qui indique une erreur de syntaxe:

    Nom : c++.png
Affichages : 131
Taille : 13,3 Ko

    Pourriez vous m'aider SVP?

    Merci

  2. #2
    Membre régulier Avatar de Nono Sto
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 350
    Points : 74
    Points
    74
    Par défaut
    Dans le header j'ai ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // KeRaiseIrqlToDpcLevel:
    // Raises IRQL to DISPATCH_LEVEL.  Like KeRaiseIrql except returns old level directly.
    //
    // Differences from NT: None.
    NTSYSAPI
    EXPORTNUM(129)
    KIRQL
    NTAPI
    KeRaiseIrqlToDpcLevel(
    	VOID
    	);

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Le truc chelou c'est que tu prends le pointeur de la fonction KeRaiseIrqlToDpcLevel ... mais elle n'existe pas . Comment l'éditeur de liens peut ne rien dire ?
    Et au passage , nettoies ta fenêtre de débogage : les variables bufI et szStr elles sont-où ?
    Et tu n'a pas besoin d'utiliser l'opérateur & pour prendre l'adresse d'une fonction.

    Et l'autre truc [ultra] ultra bête () la signature de la fonction KeRaiseIrqlToDpcLevel et du pointeur KeRaiseIrqlToDpcLevelFix n'est pas le même (au delà de toutes les macros du début)
    Tu ne vois pas
    c'est quoi ce VOID en majuscule ... il est où le typedef

  4. #4
    Membre régulier Avatar de Nono Sto
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 350
    Points : 74
    Points
    74
    Par défaut
    Merci beaucoup

    Citation Envoyé par foetus Voir le message
    Le truc chelou c'est que tu prends le pointeur de la fonction KeRaiseIrqlToDpcLevel ... mais elle n'existe pas . Comment l'éditeur de liens peut ne rien dire ?
    Merci du coup KeRaiseIrqlToDpcLevel n'est pas une fonction c'est quoi?


    Citation Envoyé par foetus Voir le message
    Et tu n'a pas besoin d'utiliser l'opérateur & pour prendre l'adresse d'une fonction.
    comment faire STP?

    Citation Envoyé par foetus Voir le message
    Et l'autre truc [ultra] ultra bête () la signature de la fonction KeRaiseIrqlToDpcLevel et du pointeur KeRaiseIrqlToDpcLevelFix n'est pas le même (au delà de toutes les macros du début)
    Tu ne vois pas
    Non pas vraiment...

    Citation Envoyé par foetus Voir le message
    c'est quoi ce VOID en majuscule ... il est où le typedef
    la je suis perdu.

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Cela va être [très] compliqué :
    • tu n'arrives pas à faire la distinction entre le mot clef void (utilisé pour le passage de paramètres pour dire qu'il n'y a aucun paramètre) (et affiché en bleu parce qu'il est connu) et VOID (qui n'est rien du tout à part peut-être un type créé avec typedef)
    • tu sembles ne pas connaître une fonctionnalité de ton IDE "voir la définition" en cliquant droit sur un mot surligné (celle de ce VOID en majuscule)
    • tu sembles ne pas connaître la notion de pointeur de fonctions, notamment les 2 syntaxes équivalentes et l'utilisation d'un typedef pour alléger grandement la syntaxe



    Citation Envoyé par Nono Sto Voir le message
    Merci du coup KeRaiseIrqlToDpcLevel n'est pas une fonction c'est quoi?
    Je soupçonne que cette fonction doit se trouver dans une bibliothèque type .dll/ .so
    C'est pour cela que l'éditeur de liens ne dit rien : parce que dans le code, cette fonction est marquée comme exportée (c'est sûrement l'utilité de NTSYSAPI EXPORTNUM(129))

    Mais si c'est le cas, cela veut dire que ton code est mauvais. Soit
    • à l'ouverture de cette bibliothèque, parce qu'elle n'existe pas
    • à la récupération de l'adresse de cette fonction dans la bibliothèque, parce que, la bibliothèque existe, mais elle n'a pas cette fonction
    • autre chose mais les 2 précédentes raisons me semblent les + crédibles et les + faciles à vérifier (surtout avec un logiciel comme "Dependency Walker")

Discussions similaires

  1. Probleme avec BCB qui passe en mode debug cpu
    Par blondelle dans le forum C++Builder
    Réponses: 1
    Dernier message: 28/04/2007, 19h54
  2. [FPDF] Probleme avec code barre et fdpdf
    Par serwol dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 02/10/2006, 11h13
  3. [PHP-JS] Probleme avec onchange qui ne redirige pas
    Par Greggggggg dans le forum Langage
    Réponses: 11
    Dernier message: 28/07/2006, 12h43
  4. Probleme avec send qui n'envoi rien
    Par zeleyou dans le forum C++
    Réponses: 5
    Dernier message: 06/02/2006, 15h27
  5. Réponses: 17
    Dernier message: 24/03/2005, 12h24

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