Korzystanie z dostarczonego przez system zastępnika
Aby użyć zastępczego serwera DLL dostarczonego przez system, zarejestruj bibliotekę DLL, określając pusty ciąg lub NULL dla wartości DllSurrogate w rejestrze. Gdy żądanie aktywacji dla serwera DLL w ten sposób oznaczonego przychodzi do modelu COM, COM uruchamia domyślny proces zastępczy oraz żądaną bibliotekę DLL (podając identyfikator CLSID wewnętrznie w wierszu polecenia uruchamiania), aby uniknąć osobnego wywołania. (Aby uzyskać informacje na temat uruchamiania więcej niż jednego serwera DLL w procesie zastępczym, zobacz udostępnianie zastępcze.
Domyślną implementacją procesu zastępczego jest serwer pseudo-COM w stylu modelu mieszanego. Gdy wiele serwerów DLL jest ładowanych do jednego procesu zastępczego, ten proces zapewnia utworzenie wystąpienia każdego serwera DLL przy użyciu modelu wątkowania określonego w rejestrze dla tego serwera. Wszystkie załadowane serwery z wolnymi wątkami będą działać razem w wielowątkowym apartamencie, podczas gdy każdy serwer apartamentowy będzie znajdować się w jednobiegunowym apartamencie. Jeśli serwer DLL obsługuje oba modele wątków, COM wybierze wielowątkowość.
Ten proces zastępczy jest napisany, aby COM zarządzał zarówno zwalnianiem serwerów DLL, jak i kończeniem procesu zastępczego. Okres istnienia procesu jest przede wszystkim informowany przez liczbę obiektów marshalowanych w surogatce, która działa jako heurystyczna miara zależności zewnętrznych w procesie. Mimo że celem jest reprezentowanie zależności zewnętrznych, ten model okresu istnienia nie rozróżnia marshalingu in-proc i out-of-proc. Należy zachować ostrożność, aby uniknąć przypadkowego przypinania obiektu zastępczego w wyniku marshalingu między apartamentami lub za pomocą mechanizmów opartych na marshalingu, takich jak Global Interface Table lub IAgileReference.
Udostępniony przez system surogat będzie działał bardzo dobrze dla większości deweloperów, a także jest bardzo łatwy w użyciu. Jednak deweloperzy, którzy mają specjalne wymagania, mogą zdecydować, że konieczne jest użycie niestandardowego zastępnika. Aby uzyskać więcej informacji, zobacz Tworzenie niestandardowego zastępcy.