Delen via


Het door het systeem geleverde surrogaat gebruiken

Als u de door het systeem geleverde surrogaat voor uw DLL-server wilt gebruiken, registreert u het DLL-bestand dat een lege tekenreeks of NULL- opgeeft voor de DllSurrogate--waarde in het register. Wanneer een activeringsaanvraag voor een DLL-server die specifiek is aangewezen binnen COM aankomt, start COM de standaard surrogaatproces en de aangevraagde DLL door intern de CLSID op de opdrachtregel te specificeren, gelijktijdig om een afzonderlijke aanroep te voorkomen. (Zie Surrogaatdelenvoor informatie over het draaien van meerdere DLL-servers in een surrogaatproces.)

De standaardimplementatie van het vervangproces is een pseudo-COM-server met een modelstijl voor gemengde threading. Wanneer meerdere DLL-servers in één surrogaatproces worden geladen, zorgt dit proces ervoor dat elke DLL-server wordt geïnstantieerd met behulp van het threadingmodel dat is opgegeven in het register voor die server. Alle geladen vrij-draadservers wonen samen in het multithreaded appartement, terwijl elke appartement-draadserver zich in een één-draadappartement bevindt. Als een DLL-server beide threadingmodellen ondersteunt, kiest COM multithreading.

Dit surrogaatproces wordt geschreven zodat COM zowel het lossen van DLL-servers als het beëindigen van het surrogaatproces afhandelt. De levensduur van het proces wordt vooral bepaald door het aantal gemarshallingde objecten in het surrogaat, dat fungeert als een heuristische indicator van externe afhankelijkheden van het proces. Hoewel de bedoeling is om externe afhankelijkheden te vertegenwoordigen, maakt dit levensduurmodel geen onderscheid tussen in-proc en out-of-proc marshaling. Zorg ervoor dat u het surrogaat niet per ongeluk vastmaakt via marshaling tussen verschillende appartementen of door middel van op in-proc marshaling gebaseerde mechanismen zoals de Global Interface Table of IAgileReference.

De door het systeem geleverde surrogaat werkt zeer goed voor de meeste ontwikkelaars en is zeer eenvoudig te gebruiken. Deze ontwikkelaars met speciale overwegingen kunnen echter besluiten dat een aangepast surrogaat nodig is. Zie Een aangepaste surrogaatschrijven voor meer informatie.