2010-05-03 7 views
0

j'ai un doute dans dlls chargement & traitement en mémoire, normalement dlls sont bibliothèque partagée si dll devrait charger une fois est suffisant.si un processus charge un dll (ex.advapi32.dll) dans des moyens de mémoire, après qu'un autre processus comment se réfère advapi32.dll à ce processus ... comment peut partager l'emplacement commun pour chaque processus ...dll processus dans le système?

+1

Les DLL sont mappées en mémoire afin qu'elles soient partagées, mais ce n'est que le chargement du code dans la mémoire. Que ce soit un singleton ou que le code crée des instances uniques est entièrement à vous lorsque vous développez la bibliothèque. –

Répondre

1

Je ne suis pas entièrement sûr de savoir quelle est votre question, mais oui, si plusieurs processus importent la même DLL, la lecture Seules les sections de cette DLL sont généralement mappées dans tous ces processus. D'un autre côté, une section qui peut changer, comme le segment BSS (variable), reçoit une copie dans chaque processus de sorte que les changements qu'un processus effectue soient invisibles aux autres processus. Si vous souhaitez que certaines modifications soient partagées entre les processus de votre propre DLL, vous pouvez marquer une section de données dans la DLL comme partagée. La façon exacte de procéder dépend des outils de développement que vous utilisez.

+0

Par Larsen, merci pour votre réponse ... j'ai eu une vue claire sur l'utilisation partagée de dlls .... – Rajakumar

Questions connexes