Aktiveringskontexter
Aktiveringskontexter är datastrukturer i minnet som innehåller information som systemet kan använda för att omdirigera ett program för att läsa in en viss DLL-version, COM-objektinstans eller anpassad fönsterversion. Ett avsnitt i aktiveringskontexten kan innehålla DLL-omdirigeringsinformation som används av DLL-inläsaren. ett annat avsnitt kan innehålla COM-serverinformation. Funktionerna för aktiveringskontext använder, skapar, aktiverar och inaktiverar aktiveringskontexter. Aktiveringsfunktionerna kan omdirigera bindningen av ett program till versionsnamnsobjekt som anger specifika DLL-versioner, fönsterklasser, COM-servrar, typbibliotek och gränssnitt. Mer information om funktioner och strukturer för aktiveringskontext finns i Aktiveringskontextreferens.
Från och med Windows XP gör aktiveringskontextfunktioner att Windows kan använda information i manifest för att skapa versionsnamnsobjekt. Om ett program skapar en process genom att anropa CreateProcesskontrollerar Windows att det finns ett programmanifest. Om det finns ett manifest använder Windows informationen i manifestet för att fylla i aktiveringskontexten. Eftersom manifest beskriver ett programs beroende av sida vid sida-sammansättning versioner mappas objekt som anges utan versioner i manifestet till versionsnamnsobjekt. Manifestet kan till exempel beskriva DLL:er, filer, fönsterklasser, COM-servrar, typbibliotek och gränssnitt.
När ett globalt objekt skapas i aktiveringskontexten ger systemet automatiskt objektet ett versionsspecifikt namn genom att konsultera manifestet. När programmet körs och begär ett namngivet objekt hämtar det versionsnamnsobjektet. Detta gör att flera versioner av en kodmodul kan köras på systemet samtidigt utan att störa varandra. Till exempel använder Windows Shell- ett manifest för att beskriva ett beroende av version 6.0 av COMCTL32 och för att skapa versioner av fönsterklasser.
Om ett program skapar en resurs genom att anropa CreateWindowanger processen ett klassnamn för den funktionen. Anropet till GetCurrentActCtx hämtar den aktuella aktiveringskontexten och kontrollerar om det finns en mappning för det angivna klassnamnet. Om det finns en mappning använder den versionen av anropsprocessen för att matcha mappningen och ange det versionsspecifika klassnamnet. Windows skapar ett fönster med fönsterproceduren, formatmallarna och andra attribut som är associerade med klassnamnet och versionen.
Aktiveringskontexten hanteras av systemet i de flesta fall. Programutvecklare och sammansättningsleverantörer behöver vanligtvis inte göra anrop till stacken. Program kan hantera en aktiveringskontext genom att direkt anropa aktiveringskontexten. Mer information finns i Using the Activation Context API.