Aktivierungskontexte

Aktivierungskontexte sind Datenstrukturen im Arbeitsspeicher, die Informationen enthalten, die das System verwenden kann, um eine Anwendung zum Laden einer bestimmten DLL-Version, eines COM-Objekts instance oder einer benutzerdefinierten Fensterversion umzuleiten. Ein Abschnitt des Aktivierungskontexts kann DLL-Umleitungsinformationen enthalten, die vom DLL-Ladeprogramm verwendet werden. Ein anderer Abschnitt kann COM-Serverinformationen enthalten. Die Aktivierungskontextfunktionen verwenden Aktivierungskontexte, erstellen, aktivieren und deaktivieren sie. Die Aktivierungsfunktionen können die Bindung einer Anwendung an versionsspezifische Objekte umleiten, die bestimmte DLL-Versionen, Fensterklassen, COM-Server, Typbibliotheken und Schnittstellen angeben. Weitere Informationen zu den Funktionen und Strukturen des Aktivierungskontexts finden Sie in der Referenz zum Aktivierungskontext.

Ab Windows XP ermöglichen Aktivierungskontextfunktionen Windows die Verwendung von Informationen in Manifesten zum Erstellen von objekten mit Versionsnamen. Wenn eine Anwendung einen Prozess durch Aufrufen von CreateProcess erstellt, überprüft Windows, ob ein Anwendungsmanifest vorhanden ist. Wenn ein Manifest vorhanden ist, verwendet Windows die Informationen im Manifest, um den Aktivierungskontext aufzufüllen. Da Manifeste die Abhängigkeit einer Anwendung von parallelen Assemblyversionen beschreiben, werden Objekte, die ohne Versionen im Manifest angegeben sind, Versionsnamenobjekten zugeordnet. Das Manifest kann beispielsweise DLLs, Dateien, Fensterklassen, COM-Server, Typbibliotheken und Schnittstellen beschreiben.

Wenn ein globales Objekt innerhalb des Aktivierungskontexts erstellt wird, weist das System dem Objekt automatisch einen versionsspezifischen Namen zu, indem es das Manifest konsultiert. Wenn die Anwendung ein benanntes Objekt ausführt und anfordert, ruft sie das mit der Version benannte Objekt ab. Dadurch können mehrere Versionen eines Codemoduls gleichzeitig auf dem System ausgeführt werden, ohne sich gegenseitig zu stören. Windows Shell verwendet beispielsweise ein Manifest, um eine Abhängigkeit von Version 6.0 von COMCTL32 zu beschreiben und Versionen von Fensterklassen zu erstellen.

Wenn eine Anwendung eine Ressource durch Aufrufen von CreateWindow erstellt, gibt der Prozess einen Klassennamen für diese Funktion an. Der Aufruf von GetCurrentActCtx ruft den aktuellen Aktivierungskontext ab und überprüft, ob eine Zuordnung für den angegebenen Klassennamen vorhanden ist. Wenn eine Zuordnung vorhanden ist, wird diese Version des aufrufenden Prozesses verwendet, um die Zuordnung aufzulösen und den versionsspezifischen Klassennamen anzugeben. Windows erstellt ein Fenster mit den Fensterprozeduren, Formatvorlagen und anderen Attributen, die diesem Klassennamen und dieser Version zugeordnet sind.

Der Aktivierungskontext wird in den meisten Fällen vom System verwaltet. Anwendungsentwickler und Assemblyanbieter müssen in der Regel keine Aufrufe an den Stapel tätigen. Anwendungen können einen Aktivierungskontext verwalten, indem sie den Aktivierungskontext direkt aufrufen. Weitere Informationen finden Sie unter Verwenden der Aktivierungskontext-API.