Konteksty aktywacji
konteksty aktywacji to struktury danych w pamięci zawierające informacje, których system może użyć do przekierowania aplikacji w celu załadowania określonej wersji biblioteki DLL, wystąpienia obiektu COM lub niestandardowej wersji okna. Jedna sekcja kontekstu aktywacji może zawierać informacje o przekierowaniu bibliotek DLL, które są używane przez moduł ładujący bibliotek DLL; inna sekcja może zawierać informacje o serwerze COM. Funkcje kontekstu aktywacji używają, tworzą, aktywują i dezaktywować konteksty aktywacji. Funkcje aktywacji mogą przekierowywać powiązanie aplikacji do obiektów o nazwach wersji, które określają określone wersje bibliotek DLL, klasy okien, serwery COM, biblioteki typów i interfejsy. Aby uzyskać więcej informacji na temat funkcji i struktur kontekstu aktywacji, zobacz dokumentację kontekstu aktywacji .
Począwszy od systemu Windows XP, funkcje kontekstu aktywacji umożliwiają systemowi Windows używanie informacji w manifestach do tworzenia obiektów nazwanych wersjami. Jeśli aplikacja tworzy proces przez wywołanie CreateProcess, system Windows sprawdza istnienie manifestu aplikacji . Jeśli manifest istnieje, system Windows używa informacji w manifeście, aby wypełnić kontekst aktywacji. Ponieważ manifesty opisują zależność aplikacji od równoległych wersji zestawów, obiekty określone bez wersji w manifeście są mapowane na obiekty o nazwie wersji. Na przykład manifest może opisywać biblioteki DLL, pliki, klasy okien, serwery COM, biblioteki typów i interfejsy.
Po utworzeniu obiektu globalnego w kontekście aktywacji system automatycznie nadaje obiektowi nazwę specyficzną dla wersji, konsultując manifest. Gdy aplikacja wykonuje i żąda nazwanego obiektu, pobiera obiekt o nazwie version-named. Dzięki temu można uruchamiać wiele wersji modułu kodu w tym samym czasie bez zakłócania siebie nawzajem. Na przykład powłoki systemu Windows używa manifestu do opisania zależności od wersji 6.0 COMCTL32 i tworzenia wersji klas okien.
Jeśli aplikacja tworzy zasób przez wywołanie CreateWindow, proces określa nazwę klasy dla tej funkcji. Wywołanie metody GetCurrentActCtx pobiera bieżący kontekst aktywacji i sprawdza, czy istnieje mapowanie dla danej nazwy klasy. Jeśli istnieje mapowanie, użyje tej wersji procesu wywołującego, aby rozpoznać mapowanie i podać nazwę klasy specyficznej dla wersji. System Windows tworzy okno z procedurą okna, stylami i innymi atrybutami skojarzonymi z tą nazwą klasy i wersją.
W większości przypadków kontekst aktywacji jest zarządzany przez system. Deweloperzy aplikacji i dostawcy zestawów często nie muszą wykonywać wywołań do stosu. Aplikacje mogą zarządzać kontekstem aktywacji przez bezpośrednie wywołanie kontekstu aktywacji. Aby uzyskać więcej informacji, zobacz Using the Activation Context API.