Het toegangspunt van de DLL-registerserver wordt niet gevonden op een specifieke locatie binnen de DLL zelf, zoals een benoemde functie. In plaats daarvan wordt het impliciet gedefinieerd door de export van een bepaalde functie *met een specifieke naam* door de DLL. Het besturingssysteem (met name het hulpprogramma `regsvr32.exe`) zoekt naar deze functie op basis van de naam, en niet door te zoeken in de interne structuur van het DLL-bestand.
De naam van het toegangspunt is altijd:`DllRegisterServer` .
Om te achterhalen waar het "DLL-registerserveringangspunt" *gedefinieerd* is, moet u daarom het volgende doen:
1. Bekijk de exporttabel van de DLL: Tools zoals Dependency Walker (depends.exe) of soortgelijke DLL-viewers kunnen u een lijst met functies tonen die door een DLL zijn geëxporteerd. Zoek naar 'DllRegisterServer' in die lijst. Als het aanwezig is, kan het hulpprogramma u zelfs het geheugenadres in de DLL laten zien. Het simpelweg vinden van de naam geeft u echter niet de locatie van de broncode.
2. Bekijk de broncode van de DLL (als je die hebt): Als u de broncode voor de DLL heeft, vindt u de functie `DllRegisterServer` rechtstreeks in de bronbestanden. Het zal een functie zijn die wordt gedeclareerd als:
```c++
STDAPI DllRegisterServer (ongeldig);
```
(of een soortgelijke verklaring, afhankelijk van de gebruikte taal). De compiler zal vervolgens de export naar de exporttabel van de DLL afhandelen.
Belangrijke opmerking: De functie `DllRegisterServer` is *alleen* aanwezig in DLL's die zijn ontworpen om bij het systeem te worden geregistreerd. Veel DLL's hebben geen registratie nodig en bevatten deze functie daarom niet. Als u probeert een DLL te registreren die deze functie niet heeft, resulteert dit in een fout. |