Dela via


DLL-serverkrav

Även om de flesta DLL:er kan köras i en surrogat, kan vissa DLL:er inte göra det.

DLL:n måste vara väluppfostrad om du vill använda surrogaten som tillhandahålls av systemet. Till exempel skulle en DLL som anropar metoder som registrerar återanrop från klienten försöka anropa dessa återanrop som om funktionspekarna som den fick var för instruktioner i dess adressutrymme, vilket inte är fallet. På samma sätt fungerar inte en DLL som använder en global variabel som den förväntar sig att klienten ska komma åt. I allmänhet förhindrar parametrar som inte kan konverteras korrekt DLL-servern från att köras utanför klientprocessen. I många fall kan du skriva en anpassad surrogat som är särskilt utformad för att kompensera för "dåligt" beteende. (Mer information finns i Skriva en anpassad surrogat.)

Om DLL-servern använder anpassade gränssnitt måste du se till att kod för marskalkering är tillgänglig för dessa gränssnitt. Du kan till exempel skapa och registrera en proxy-DLL eller ange och registrera ett typbibliotek som gör att servern kan fungera korrekt när den körs i en surrogatfil.

DLL-servrar läses bara in i en surrogatprocess som körs i rätt säkerhetskontext. Säkerhetskontexten för DLL-serverns surrogat bestäms på samma sätt som för EXE-servrar. DLL-server surrogat körs i samma säkerhetskontext som klienten, såvida inte ett RunAs värde, som avgör säkerhetskontexten, anges i avsnittet AppID register för servern.

DLL-surrogater