Wymagania dotyczące serwera DLL
Chociaż większość bibliotek DLL może być uruchamiana w surogatce, niektóre biblioteki DLL nie mogą.
Biblioteka DLL musi być dobrze zachowywana, jeśli chcesz użyć zastępczego dostarczonego przez system. Na przykład biblioteka DLL, która wywołuje metody rejestrujące wywołania zwrotne od klienta, spróbuje wywołać te wywołania zwrotne tak, jakby otrzymane wskaźniki funkcji były instrukcjami w przestrzeni adresowej, co nie jest przypadkiem. Podobnie biblioteka DLL, która używa zmiennej globalnej, która oczekuje, że klient będzie uzyskiwać dostęp, nie będzie działać. Ogólnie rzecz biorąc, parametry, których nie można prawidłowo marshaled, uniemożliwią działanie serwera DLL poza procesem klienta. W wielu przypadkach można napisać niestandardowy surogat specjalnie zaprojektowany w celu zrekompensowania "złego" zachowania. (Aby uzyskać więcej informacji, zobacz Pisanie niestandardowegozastępczego).
Jeśli serwer DLL używa interfejsów niestandardowych, należy upewnić się, że marshaling kodu jest dostępny dla tych interfejsów. Można na przykład utworzyć i zarejestrować bibliotekę DLL serwera proxy lub podać i zarejestrować bibliotekę typów, która pozwoliłaby serwerowi działać poprawnie podczas działania w surogatce.
Serwery DLL zostaną załadowane tylko do procesu zastępczego uruchomionego w odpowiednim kontekście zabezpieczeń. Kontekst zabezpieczeń dla zastępczego serwera DLL jest określany w taki sam sposób, jak w przypadku serwerów EXE. Surogat serwera DLL jest uruchamiany w tym samym kontekście zabezpieczeń co klient, chyba że wartość Uruchom jako, która określa kontekst zabezpieczeń, jest ustawiona w appID sekcji rejestru serwera.
Tematy pokrewne