Le point d’entrée du serveur de registre DLL ne se trouve pas à un emplacement spécifique dans la DLL elle-même, comme une fonction nommée. Au lieu de cela, il est implicitement défini par l'exportation par la DLL d'une fonction particulière *avec un nom spécifique*. Le système d'exploitation (en particulier l'utilitaire « regsvr32.exe ») recherche cette fonction en fonction de son nom, et non en recherchant dans la structure interne de la DLL.
Le nom du point d'entrée est toujours :`DllRegisterServer` .
Par conséquent, pour trouver où le « point d’entrée du serveur de registre DLL » est *défini*, vous devez :
1. Examinez la table d'export de la DLL : Des outils tels que Dependency Walker (depends.exe) ou des visualiseurs de DLL similaires peuvent vous montrer une liste de fonctions exportées par une DLL. Recherchez « DllRegisterServer » dans cette liste. S'il est présent, l'outil peut même vous montrer son adresse mémoire dans la DLL. Cependant, le simple fait de trouver le nom ne vous donne pas l'emplacement du code source.
2. Examinez le code source de la DLL (si vous l'avez) : Si vous disposez du code source de la DLL, vous trouverez la fonction `DllRegisterServer` directement dans les fichiers sources. Ce sera une fonction déclarée comme :
```c++
STDAPI DllRegisterServer (vide);
```
(ou une déclaration similaire selon la langue utilisée). Le compilateur gérera ensuite son export vers la table d'export de la DLL.
Remarque importante : La fonction `DllRegisterServer` est *uniquement* présente dans les DLL conçues pour être enregistrées auprès du système. De nombreuses DLL ne nécessitent pas d'enregistrement et ne contiennent donc pas cette fonction. Essayer d'enregistrer une DLL qui n'a pas cette fonction entraînera une erreur.
|