Je sais comment enregistrer des DLL mais je n'ai jamais vraiment été sûr de savoir pourquoi je le faisais ou dans quelles conditions un DLL doit être enregistré. Quelqu'un pourrait-il m'expliquer ou me diriger vers une documentation?Que fait l'inscription d'une DLL?
Répondre
Lorsqu'une DLL est enregistrée, le point d'entrée de la méthode DllRegisterServer
dans votre DLL est appelé. De même, DllUnregisterServer
est appelée lorsqu'une DLL est désenregistrée.
Comme décrit dans this MSDN article:
charge un serveur à créer en cours de ses entrées de registre pour toutes les classes pris en charge dans ce module serveur . Si cette fonction échoue, l'état du registre pour toutes ses classes est indéterminé.
Pour les DLL COM, vous devrez mettre en œuvre vos propres méthodes de point d'entrée DllRegisterServer
et DllUnregisterServer
qui font l'enregistrement/désinscription selon le cas. Exemple de code pour DllRegisterServer
peut être trouvé here.
Le résultat final de l'inscription d'une DLL est que tous les CLSID pour les composants de la DLL sont enregistrés sous HKEY_CLASSES_ROOT\CLSID
. Cela permet à CoCreateInstance
de trouver le serveur correct lors de l'instanciation d'objets COM à partir d'une autre DLL ou application.
DllUnregisterServer
fera l'inverse, et supprimera tous les CLSID du registre qui ont été placés là par DllRegisterServer
. Les informations plus générales sur DllRegisterServer
peuvent être trouvées here.
Ce que l'on appelle le plus souvent l'inscription de DLL est quand il implémente un objet COM. regsvr32 garantit qu'une instance de l'objet peut être créée. Lorsque, par exemple, VBScript utilise New ou CreateObject(), l'enregistrement s'assure que COM sait quelle DLL charger afin de créer une nouvelle instance, que ce soit par nom ou CLSID.
Voir "the layman's explanation" pour un (très) bref résumé.
Le lien est rompu. S'il vous plaît fournir un substitut. –
Terminé. Aussi archivé comme https://web.archive.org/web/20170222094351/https://chewychong.wordpress.com/2004/08/23/layman-s-explanation-of-regscvs-regasm-regsvr32/ –
voir simplement le code source de regsvr32.exe
J'étais surpris de découvrir que ce code source est réellement disponible avec Visual Studio: http://msdn.microsoft.com/en-us/library/ms177531.aspx –
- 1. Que fait cette fonction?
- 2. IIS7 - que fait MaxProcesses?
- 3. Que fait l'opérateur =>?
- 4. Que fait readlink systemcall?
- 5. Que fait exactement FillMode?
- 6. Que fait '@_' dans Perl?
- 7. Que fait exactement rangeOfCharacterFromSet?
- 8. Que fait ce javascript
- 9. Que fait [STAThread]?
- 10. Que fait sizeof (char *)?
- 11. Que fait stdole.dll?
- 12. Que fait (int ** array;) créer?
- 13. WCF: Que fait exactement IsInitiating?
- 14. Que fait la méthode registerNatives()?
- 15. Que fait cet attribut .NET?
- 16. Que fait typedef en C++?
- 17. Que fait ce code Javascript?
- 18. que fait cette macro C++?
- 19. Que fait === faire en PHP
- 20. Que fait l'objet * foo (bar)?
- 21. Que fait ce code javascript?
- 22. Que fait {variable} dans flex
- 23. Que fait <() dans Bash?
- 24. Que fait la méthode Container.validate()?
- 25. Que fait cette expression régulière?
- 26. Que fait ce code? (2)
- 27. Que fait "%% DatabaseEx" dans TSQL?
- 28. Que fait exactement l'utilitaire "ar"?
- 29. Que fait glLoadIdentity() en OpenGL?
- 30. Que fait @ dans ce php?
Lorsque je crée une DLL ActiveX dans VB6 Je n'ai pas à mettre en œuvre DllRegisterServer. – CJ7