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

Windows Discussion :

Evenement au déchargement d'une dll par windows


Sujet :

Windows

  1. #1
    Membre actif 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
    Points : 294
    Points
    294
    Par défaut Evenement au déchargement d'une dll par windows
    Bonjour à tous,

    J'ai déjà posté sur le forum C à ce sujet, mais il m'a paru au final plus approprié de poster ici.

    En gros, j'ai besoin, dans une dll, de détecter que l'application qui a demandé le chargement de cette dll a planté. En gros, je dois détecter le déchargement de ma dll par windows.

    J'ai tenté de boucler sur !GetMessage(&msg,NULL,0,0)==TRUE , pour détecter l'évènement WM_QUIT qui est envoyé par windows au moment de la fermeture de la dll.

    Seulement, ceci n'a pas l'air de fonctionner.

    Quelqu'un aurait-il une idée sur la marche à suivre svp ?

    merci d'avance

  2. #2
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Points : 1 956
    Points
    1 956
    Par défaut
    Bonjour,

    Citation Envoyé par peijnoob
    En gros, j'ai besoin, dans une dll, de détecter que l'application qui a demandé le chargement de cette dll a planté. En gros, je dois détecter le déchargement de ma dll par windows.
    Je doute que lorsqu'un programme plante, les DLLs chargées aient le temps d'être notifiées qu'elles vont être déchargées (puisque le programme vient de planter).

    Si tu peux, essaye de gérer le cas DLL_PROCESS_DETACH dans DllMain ( http://msdn2.microsoft.com/en-us/library/ms682583.aspx ) qui est la seule notification possible du déchargement de DLL.

    S'il n'y a pas de notification, il reste la possibilité d'attacher un débogueur JIT après un crash ou demander un dump du programme, ça peut toujours aider à diagnostiquer la cause du problème.

    J'ai tenté de boucler sur !GetMessage(&msg,NULL,0,0)==TRUE , pour détecter l'évènement WM_QUIT qui est envoyé par windows au moment de la fermeture de la dll.
    Non, WM_QUIT est envoyé au programme principale lorsqu'il va se terminer proprement via PostQuitMessage(). Ca ne notifie pas d'un déchargement de DLL.

  3. #3
    Membre actif 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
    Points : 294
    Points
    294
    Par défaut
    merci pour cette réponse claire

    Le programme qui appelle le fenetre sera dans la majorité des cas développé par nous même. Dans ce cas, c'est simple, il me suffit de bien gérer les exceptions dans l'appli et il n'y aura pas de problème.

    Par contre, elle sera aussi utilisée dans des applis que nous n'auront pas développées, et pour ces cas là, j'aimerais bien avoir une roue de secours au cas où.

    Je vais regarder au niveau du DLL_PROCESS_DETACH, sinon, pas trop d'autre solution possible.

    Merci encore

  4. #4
    Membre actif 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
    Points : 294
    Points
    294
    Par défaut
    Bon bah merci beaucoup, ça fonctionne parfaitement avec le DLL_PROCESS_DETACH.

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

Discussions similaires

  1. Charger une dll (api windows)
    Par zenux dans le forum C++
    Réponses: 3
    Dernier message: 11/12/2007, 11h59
  2. Réponses: 4
    Dernier message: 07/05/2007, 21h38
  3. [c#] comment récupérer le namespace d'une DLL par réflection?
    Par Jayceblaster dans le forum Windows Forms
    Réponses: 2
    Dernier message: 20/07/2006, 13h20
  4. Réponses: 5
    Dernier message: 08/09/2005, 20h33
  5. Problème mémoire avec une dll par chargement dynamique
    Par widze19 dans le forum C++Builder
    Réponses: 6
    Dernier message: 15/12/2003, 13h20

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