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 :

Intérêt du chargement différé des DLL


Sujet :

Windows

  1. #1
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut Intérêt du chargement différé des DLL
    Suite à ce post Problème de création de DLL, je me demandais quel est l'intérêt de cette fonctionnalité de "chargement différé".

    Je n'ai rien trouvé sur google à ce sujet, je me doute que si cette option existe, c'est que cela doit avoir un usage particulier mais je ne voie pas lequel et dans quel cas on serait tenté/obligé d'utiliser un chargement différé.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 073
    Points : 12 119
    Points
    12 119
    Par défaut
    Entre autres avantages :
    - démarrage de l'application plus rapide
    - utilisation de dll non présentes sur toutes les plateformes visées
    - changement à chaud des dll
    - etc...

  3. #3
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par bacelar Voir le message
    - démarrage de l'application plus rapide
    Ca, je veux bien mais c'est plutôt une conséquence.

    Citation Envoyé par bacelar Voir le message
    - utilisation de dll non présentes sur toutes les plateformes visées
    - changement à chaud des dll
    Cela on peut aussi le faire avec du chargement dynamique (LoadLibrary(), GetProcAddress(), FreeLibrary()). Je ne voie pas la plus value du chargement différé dans ce cas.

    Citation Envoyé par bacelar Voir le message
    - etc...
    Justement quoi d'autre
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 073
    Points : 12 119
    Points
    12 119
    Par défaut
    Envoyé par bacelar
    - démarrage de l'application plus rapide
    Ca, je veux bien mais c'est plutôt une conséquence.
    Bin, c'est l'un des objectifs des personnes qui ont créées les composants logiciels qui mettent en place cette mécanique. Donc c'est une cause plus qu'une conséquence. C'est juste qu'ils ont atteint cet objectif.

    Cela on peut aussi le faire avec du chargement dynamique (LoadLibrary(), GetProcAddress(), FreeLibrary()). Je ne voie pas la plus value du chargement différé dans ce cas.
    Oui, mais il faut tout faire à la main dans ce cas, chargement de la dll, résolution d'adress etc... . Avec du delay loading de dll, le code du client de la dll est exactement le même que le code utilisant de manière statique la dll.
    Il faudra juste ajouter un peu de code pour les fonctions de callback de gestion d'erreur de chargement des dll. Et ce n'est même pas obligatoire, si l'on ne veut pas gérer ces cas de figures.

    Justement quoi d'autre
    Juste tous les cas où le lien statique à une dll pause problème et que l'on veut le même confort d'utilisation que l'utilisation d'une lib d'import d'une dll.

  5. #5
    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,

    la MSDN a tout un chapitre dédié à ce qu'on appelle "DLL delay Loading":

    http://msdn.microsoft.com/en-us/library/151kt790.aspx

    En gros, cela évite simplement d'utiliser "programmatiquement" ce que font LoadLibrary() et GetProcAddress(). Cette tâche est laissée au système. Je cite:

    This relieves you of the need to use the Windows SDK functions LoadLibrary and GetProcAddress to implement DLL delayed loading.

    [...]

    You should consider delay loading a DLL if:

    - Your program may not call a function in the DLL.
    - A function in the DLL may not get called until late in your program's execution.

  6. #6
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 043
    Points : 2 234
    Points
    2 234
    Par défaut
    Donc c'est une version non portable d'un chargement dynamique plus simple sous Visual Studio?
    Homer J. Simpson


  7. #7
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 073
    Points : 12 119
    Points
    12 119
    Par défaut
    Visual Studio
    Rien à voir avec VS, c'est lié au chargeur d'application de Windows.
    non portable d'un chargement dynamique
    Joli pléonasme.

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

Discussions similaires

  1. CommonDialog et Erreur de chargement des dll
    Par megamario dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 15/10/2011, 19h25
  2. Sécurité des assemblies : contrôler le chargement d'une DLL par un tiers ?
    Par pierre.chatelier dans le forum Framework .NET
    Réponses: 10
    Dernier message: 14/12/2008, 16h48
  3. Chargement des DLL dans le code C++
    Par Triste dans le forum C++Builder
    Réponses: 2
    Dernier message: 18/01/2008, 09h29
  4. [VB.NET] Chargement dynamique des dlls de l'application
    Par leSeb dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/01/2006, 17h49
  5. Chargement dynamique de DLL sous Unix
    Par Willou dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 18/12/2002, 18h25

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