Etkinleştirme Bağlamları
Etkinleştirme bağlamları, sistemin belirli bir DLL sürümünü, COM nesne örneğini veya özel pencere sürümünü yüklemek üzere bir uygulamayı yeniden yönlendirmek için kullanabileceği bilgileri içeren bellekteki veri yapılarıdır. Etkinleştirme bağlamının bir bölümü, DLL yükleyicisi tarafından kullanılan DLL yeniden yönlendirme bilgilerini içerebilir; başka bir bölüm COM sunucu bilgilerini içerebilir. Etkinleştirme bağlamı işlevleri etkinleştirme bağlamlarını kullanır, oluşturur, etkinleştirir ve devre dışı bırakır. Etkinleştirme işlevleri, bir uygulamanın bağlamasını belirli DLL sürümlerini, pencere sınıflarını, COM sunucularını, tür kitaplıklarını ve arabirimleri belirten sürüm adlı nesnelere yönlendirebilir. Etkinleştirme bağlamı işlevleri ve yapıları hakkında daha fazla bilgi için bkz. Etkinleştirme Bağlamı Başvurusu.
Windows XP'den başlayarak, etkinleştirme bağlamı işlevleri Windows'un sürüm adlı nesneler oluşturmak için bildirim bilgileri kullanmasını sağlar. Bir uygulama CreateProcessçağırarak bir işlem oluşturursa, Windows biruygulama bildirimi olup olmadığını denetler. Bir bildirim varsa, Windows etkinleştirme bağlamını doldurmak için bildirimdeki bilgileri kullanır. Bildirimler, uygulamanın yan yana derleme sürümlerine bağımlılığını tanımladığından, bildirimde sürümler olmadan belirtilen nesneler sürüm adlı nesnelerle eşlenir. Örneğin, bildirim DLL'leri, dosyaları, pencere sınıflarını, COM sunucularını, tür kitaplıklarını ve arabirimleri açıklamaktadır.
Etkinleştirme bağlamında genel bir nesne oluşturulduğunda, sistem bildirime danışarak nesneye otomatik olarak sürüme özgü bir ad verir. Uygulama yürütülür ve adlandırılmış bir nesne istediğinde, sürüm adlı nesneyi alır. Bu, bir kod modülünün birden çok sürümünün birbiriyle karışmadan sistemde aynı anda çalışmasını sağlar. Örneğin Windows Shell, COMCTL32 6.0 sürümüne bağımlılığı açıklamak ve pencere sınıflarının sürümlerini oluşturmak için bir bildirim kullanır.
Bir uygulama createWindowçağırarak bir kaynak oluşturursa, işlem bu işlev için bir sınıf adı belirtir. GetCurrentActCtxçağrısı geçerli etkinleştirme bağlamını alır ve verilen sınıf adı için eşleme olup olmadığını denetler. Eşleme varsa, eşlemeyi çözümlemek ve sürüme özgü sınıf adını sağlamak için çağrı işleminin bu sürümünü kullanır. Windows, bu sınıf adı ve sürümüyle ilişkili pencere yordamını, stilleri ve diğer öznitelikleri içeren bir pencere oluşturur.
Etkinleştirme bağlamı çoğu durumda sistem tarafından yönetilir. Uygulama geliştiricilerinin ve derleme sağlayıcılarının genellikle yığına çağrı yapması gerekmez. Uygulamalar, etkinleştirme bağlamını doğrudan çağırarak etkinleştirme bağlamını yönetebilir. Daha fazla bilgi için bkz. Etkinleştirme Bağlamı API'sini kullanma.