DLL -registerserverns inträdesplats finns inte på en specifik plats inom DLL själv som en namngiven funktion. Istället definieras det implicit av DLL:s export av en viss funktion *med ett specifikt namn *. Operativsystemet (specifikt, "REGSVR32.EXE" -verktyget) letar efter denna funktion baserat på dess namn, inte genom att söka igenom DLL:s interna struktur.
Ingångspunktens namn är alltid: `dllregisterServer` .
För att hitta var "DLL Register Server -ingångspunkten" är *definierad *, måste du:
1. Undersök DLL:s exporttabell: Verktyg som Dependency Walker (DESS.EXE) eller liknande DLL -tittare kan visa dig en lista över funktioner som exporteras av en DLL. Leta efter `DllregisterServer` i den listan. Om det är närvarande kan verktyget till och med visa dig sin minnesadress inom DLL. Men att bara hitta namnet ger dig inte källkodplatsen.
2. Undersök DLL:s källkod (om du har det): Om du har källkoden för DLL, hittar du funktionen "DllregisterServer" direkt i källfilerna. Det kommer att vara en funktion som deklareras som:
`` `C ++
STDAPI DLLREGISTERSERVER (VOID);
`` `
(eller en liknande deklaration beroende på det språk som används). Kompilatorn hanterar sedan sin export till DLL:s exporttabell.
Viktig anmärkning: Funktionen "DllregisterServer" är * endast * närvarande i DLL:er som är utformade för att vara registrerade i systemet. Många DLL:er behöver inte registrering och innehåller därför inte den här funktionen. Att försöka registrera en DLL som inte har den här funktionen kommer att resultera i ett fel.