Aktivierungskontexte

Aktivierungskontexte sind Datenstrukturen im Arbeitsspeicher, die Informationen enthalten, mit denen das System eine Anwendung umleiten kann, um eine bestimmte DLL-Version, EINE COM-Objektinstanz oder eine benutzerdefinierte Fensterversion zu laden. Ein Abschnitt des Aktivierungskontexts kann DLL-Umleitungsinformationen enthalten, die vom DLL-Ladeprogramm verwendet werden. Ein anderer Abschnitt kann COM-Serverinformationen enthalten. Die Aktivierungskontextfunktionen verwenden, erstellen, aktivieren und deaktivieren Aktivierungskontexte. Die Aktivierungsfunktionen können die Bindung einer Anwendung an Objekte mit Versionsnamen umleiten, die bestimmte DLL-Versionen, Fensterklassen, COM-Server, Typbibliotheken und Schnittstellen angeben. Weitere Informationen zu den Aktivierungskontextfunktionen und -strukturen finden Sie in der Referenz zum Aktivierungskontext.

Ab Windows XP ermöglichen Aktivierungskontextfunktionen Windows die Verwendung von Informationen in Manifesten, um Versionsobjekte zu erstellen. Wenn eine Anwendung einen Prozess durch Aufrufen von CreateProcesserstellt, überprüft Windows, ob ein Anwendungsmanifestvorhanden 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 werden, mit Versionsnamen benannten Objekten zugeordnet. Beispielsweise kann das Manifest DLLs, Dateien, Fensterklassen, COM-Server, Typbibliotheken und Schnittstellen beschreiben.

Wenn ein globales Objekt innerhalb des Aktivierungskontexts erstellt wird, gibt das System dem Objekt automatisch einen versionsspezifischen Namen, indem es das Manifest abruft. Wenn die Anwendung ausgeführt wird und ein benanntes Objekt anfordert, ruft sie das Versionsobjekt ab. Dadurch können mehrere Versionen eines Codemoduls gleichzeitig auf dem System ausgeführt werden, ohne sich gegenseitig zu beeinträchtigen. Beispielsweise verwendet Windows Shell 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 CreateWindowerstellt, 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 bereitzustellen. Windows erstellt ein Fenster mit der Fensterprozedur, den Stilen 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 des Stapels durchführen. Anwendungen können einen Aktivierungskontext verwalten, indem sie den Aktivierungskontext direkt aufrufen. Weitere Informationen finden Sie unter Verwenden der Aktivierungskontext-API.