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 :

Détecter plantage dans une dll


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de peijnoob
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 279
    Par défaut Détecter plantage dans une dll
    Bonjour à tous,

    Pour vous exposer mon problème, il faut que je vous parle d'abord de la structure du projet :

    Nous avons une ou plusieurs applications, développées dans n'importe quel langage.

    Nous avons de l'autre côté, un système de réservation. Pour faire communiquer notre application et le système de réservation, nous passons par une API, une dll écrite à l'origine en C.
    Avec cette API, nous exploitons un système de fonction en callback pour écouter ce que l'utilisateur entre comme commandes, afin de les traiter et d'agir en conséquence.

    Seulement, nous utilisons Windev comme AGL pour développer nos applications, et les callbacks ne fonctionnaient pas correctement. J'ai du développer une dll intermédiaire (en C) afin de modifier les mots clef pour la compilation (__cdecl en __stdcall).

    Avec ceci, les callbacks fonctionnent, mais nous avons un nouveau problème. Lors d'un plantage de notre application, je sui sobligé de redémarrer le système de réservation afin que les callbacks fonctionnent de nouveau correctement. En fait, il faut lorsque l'on quitte l'application, "désinscrire" celle ci des callbascks de l'api. Or, lors d'un plantage, nous ne pouvons pas appeler la fonction nécessaire.

    La solution viendrait, pour moi, avec ma dll passerelle : il faudrait que je détecte le fait que windows la décharge, lors du plantage de l'application qui l'appelle, afin que je m'occupe correctement de la fermeture de l'API.

    Seulement, je ne sais pas du tout comment gérer ça, en C. J'aurais donc besoin d'une piste pour m'aider à avancer là dessus.

    J'ai essayé de boucler sur GetMessage, pour détecter l'évènement WM_QUIT, mais je n'ai pas l'impression que ça fonctionne.

    Quelqu'un pourrait-il me donner un conseil svp ?

    merci d'avance

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par peijnoob
    ...La solution viendrait, pour moi, avec ma dll passerelle : il faudrait que je détecte le fait que windows la décharge, lors du plantage de l'application qui l'appelle, afin que je m'occupe correctement de la fermeture de l'API.

    Seulement, je ne sais pas du tout comment gérer ça, en C. J'aurais donc besoin d'une piste pour m'aider à avancer là dessus.

    J'ai essayé de boucler sur GetMessage, pour détecter l'évènement WM_QUIT, mais je n'ai pas l'impression que ça fonctionne.
    Je ne pense pas que Windows "décharge" la DLL de suite. En tous cas pas avant que tout se soit terminé.

    Et je ne pense pas que ce soit QUIT qu'il faille chercher. Plutot (mais je ne connais pas Windows) un truc du style exception (avec les signaux, les trucs comme SIGSTOP, segmentation fault, floating exception, etc..).

    Et sinon, dans ton système de réservation, tester si il y a rupture de communication. Et dans ce cas décharger à la main (si le code est bien fait, si ça n'avait pas été chargé, ça ne devrait rien faire). Puis recharger.

  3. #3
    Membre expérimenté Avatar de peijnoob
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 279
    Par défaut
    Merci pour cette réponse

    Alors, faire ça du coté du système de réservation, ce n'est pas possible, ce n'est pas moi qui le développe (et je suis loin d'avoir de l'influence sur les personnes qui le développent au point de leur dire qu'ils faudraient qu'ils y travaillent ^^)

    Ensuite, vu que c'est l'appli qui a chargé ma dll qui risque de planter, je ne sais pas si les exceptions seront bien transmises à ma deuxième.

    Enfin, cela me paraît plus un problème windows que c, donc je vais peut être plutôt aller poster là bas.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 29/03/2014, 16h59
  2. [VStudio 6] pb avec fonctions dans une DLL
    Par MogDeChNord dans le forum MFC
    Réponses: 8
    Dernier message: 08/01/2004, 08h57
  3. [BP7] Problème chargement de ressource dans une DLL
    Par Alcatîz dans le forum Turbo Pascal
    Réponses: 11
    Dernier message: 26/07/2003, 21h36
  4. PB avec "self" dans une dll
    Par DiJiRiDouS dans le forum Langage
    Réponses: 2
    Dernier message: 21/02/2003, 09h32
  5. [VB6]Passage d'un tableau dans une DLL écrite en delphi
    Par flash dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 20/09/2002, 10h15

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