Aktivierungskontexte
Aktivierungskontexte sind Datenstrukturen im Arbeitsspeicher, die Informationen enthalten, mit denen das System eine Anwendung umleiten kann, um eine bestimmte DLL-Version, COM-Objektinstanz oder 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 Versionsnamenobjekte umleiten, die bestimmte DLL-Versionen, Fensterklassen, COM-Server, Typbibliotheken und Schnittstellen angeben. Weitere Informationen zu den Aktivierungskontextfunktionen und -strukturen finden Sie in der Aktivierungskontextreferenz.
Ab Windows XP können Aktivierungskontextfunktionen Windows Informationen in Manifesten verwenden, um mit Versionsnamen benannte Objekte zu erstellen. Wenn eine Anwendung einen Prozess durch Aufrufen von CreateProcesserstellt, sucht Windows nach dem Vorhandensein eines Anwendungsmanifests. 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 Assemblys Versionen beschreiben, werden objekte, die ohne Versionen im Manifest angegeben sind, versionsspezifischen 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 das Manifest konsultiert wird. Wenn die Anwendung ein benanntes Objekt ausführt und anfordert, ruft sie das objekt mit Versionsnamen ab. Dadurch können mehrere Versionen eines Codemoduls gleichzeitig auf dem System ausgeführt werden, ohne sich gegenseitig zu stören. 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, 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 häufig 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.