Windows Çalışma Zamanı C++ Şablon Kitaplığı (WRL)

Windows Çalışma Zamanı C++ Şablon Kitaplığı (WRL), Windows Çalışma Zamanı bileşenleri yazıp kullanmanın alt düzey bir yolunu sağlayan bir şablon kitaplığıdır.

Yararları

WRL, Bileşik Nesne Modeli (COM) bileşenlerini daha kolay uygulamanızı ve kullanmanızı sağlar.Nesnenin ömrünü yönetmek için başvuru sayımı ve bir işlemin başarılı ya da başarısız olduğunu belirlemek için HRESULT değerlerini test etme gibi temizlik teknikleri sunar.WRL uygulamasını başarılı olarak kullanmak için bu kuralları ve yöntemleri dikkatle izlemeniz gerekir.

Visual C++ bileşen uzantıları (C++/CX), Windows Çalışma Zamanı bileşenlerini kullanmanın üst düzey, dile dayanan bir yoludur.Hem WRL hem de C++/CX, temizlik görevlerini adınıza otomatik yaparak Windows Çalışma Zamanı için yazma kodunu basitleştirir.

WRL ve C++/CX farklı avantajlar sağlar.C++/CX yerine WRL kullanmak istemenize yol açacak bazı nedenler:

  • WRL, Windows Çalışma Zamanı Uygulama İkili Arabirimi (ABI) üzerine çok az soyutlama ekleyerek, Windows Çalışma Zamanı API'lerini daha iyi oluşturmak ya da tüketmek için temel kodu daha iyi kontrol etmenizi sağlar.

  • C++/CX, COM HRESULT değerlerini özel durumlar olarak temsil eder.COM kullanan bir kod tabanını ya da özel durumlar kullanmayan bir tanesini devraldıysanız, özel durumlar kullanmak durumunda olmadığınızdan dolayıWRL belirtecinin Windows Çalışma Zamanı belirteci ile çalışmak için daha doğal bir yol olduğunu fark edebilirsiniz.

    [!NOT]

    WRL, HRESULT değerlerini kullanır ve özel durum oluşturmaz.Ek olarak, uygulama kodunuz bir özel durum oluşturduğunda nesnelerin düzgün şekilde yok edileceğini garanti etmeye yardımcı olmak için, WRL belirteci bir akıllı işaretçi ve RAII deseni kullanır.Akıllı işaretçiler ve RAII hakkında daha fazla bilgi için bkz: Akıllı İşaretçiler (Modern C++) ve Nesnelerin Kaynakları (RAII).

  • WRL ürününün amaç ve tasarımında, COM nesneleri programlamayı kolaylaştıran şablon tabanlı bir dizi C++ sınıfı olan Active Template Library'den (ATL) esinlenilmiştir.WRL, Windows Çalışma Zamanı kaydırmak için standart C++ kullandığından, ATL içinde Windows Çalışma Zamanı için yazılmış varolan birçok COM bileşeni ile kolayca bağlantı noktası sağlayabilir ve etkileşime girebilirsiniz.Zaten ATL'yi biliyorsanız, WRL programlamasını daha kolay bulabilirsiniz.

Başlarken

WRL ile çalışmaya hemen başlamanıza yardımcı olabilecek bazı kaynaklar.

WRL ile ATL Karşılaştırması

WRL Etkin Şablon Kitaplığı'na (ATL) benzer çünkü bunu küçük, hızlı COM nesneleri oluşturmak için kullanabilirsiniz.WRL ve ATL ayrıca modüllerdeki nesnelerin tanımı, arabirimlerin açık kaydı ve nesnelerin fabrikalar kullanılarak açık oluşturulması gibi kavramları da paylaşır.ATL hakkında bilgi sahibiyseniz, WRL ile çalışmakta güçlük çekmezsiniz.

WRL, Windows Mağazası uygulamaları için gereken COM işlevini destekler.Bu nedenle, aşağıdakiler gibi COM özellikleri için doğrudan desteği dahil etmediğinden ATL'den farklıdır:

  • toplama

  • kalıp uygulamalar

  • ikili arabirimler (IDispatch)

  • standart sabit listesi arabirimleri

  • bağlantı noktaları

  • etiket arabirimleri

  • OLE katıştırma

  • ActiveX denetimleri

  • COM+

Kavramlar

WRL yeni bir temel kavramlar temsil eden türleri sağlar.Aşağıdaki bölümler bu türleri açıklamaktadır.

ComPtr

ComPtr bir akıllı işaretçi türüdür ve şablon parametresi tarafından belirlenen arabirimi temsil eder.Arabirimden türetilmiş bir nesnenin üyelerine erişebilen bir değişken bildirmek için ComPtr kullanın.ComPtr, temel arabirim işaretçisi için otomatik olarak bir referans sayımı yapar ve başvuru sayısı sıfıra gittiğinde arabirimi serbest bırakır.

RuntimeClass

RuntimeClass belirtilen bir arabirim kümesini devralan oluşturulmuş bir sınıfı temsil eder.Bir RuntimeClass nesnesi bir ya da daha fazla Windows Çalışma Zamanı COM arabirimi desteğini bir kombinasyonu ya da bir bileşene zayıf bir başvuru olabilir.

Modül

Modül ilgili nesnelerin bir koleksiyonunu temsil eder.Bir Module nesnesi, nesneleri oluşturan sınıf fabrikalarını ve diğer uygulamaların bir nesne kullanmasını sağlayan kaydı yönetir.

Geri çağrı

Geri Arama işlevi, üye işlevi bir olay işleyicisi (bir geri arama yöntemi) olan bir nesne oluşturur.Zaman uyumsuz işlemler yazmak için Callback işlevini kullanın.

EventSource

EventSourcetemsilci olay yöneticileri için kullanılır.Bir temsilci uygulamak için WRL, temsilci eklemek, kaldırmak ve çağırmak için EventSource kullanın.

AsyncBase

AsyncBase, Windows Çalışma Zamanı zaman uyumsuz programlama modelini temsil eden sanal yöntemleri sağlar.Zaman uyumsuz bir işlemin ilerlemesini başlatabilen, durdurabilen ya da kontrol edebilen özel bir sınıf oluşturmak için bu sınıftaki üyeleri geçersiz kılın.

FtmBase

FtmBase serbest iş parçacıklı bir sıralayıcı nesnesini temsil eder.FtmBase bir genel arabirim tablosu (GIT) oluşturur ve sıralama ve proxy nesnelerinin yönetimine yardım eder.

WeakRef

WeakRef, erişilebilir olabilecek veya olmayabilecek bir nesneye başvuran zayıf bir başvuruyu temsil eden akıllı bir işaretçidir.Bir WeakRefnesnesi klasik COM tarafından değil yalnızca Windows Çalışma Zamanı tarafından kullanılabilir.

Bir WeakRef nesnesi genelde, varlığı harici bir iş parçacığı ya da uygulama tarafından kontrol edilen bir nesneyi temsil eder.Örneğin bir WeakRef nesnesi bir dosya nesnesine başvurabilir.Dosya açıldığında, WeakRef geçerlidir ve başvurulan dosyaya erişilebilir.Ancak dosya kapatıldığında WeakRef geçersizdir ve dosyaya erişilemez.

İlgili Konular

WRL Sınıf Kitaplığı Proje Şablonu

WRL Sınıf Kitaplığı proje şablonuna nasıl erişileceğini açıklar.Bu şablon, Visual Studio'yu Windows Çalışma Zamanı bileşenleri oluşturmak için kullanmayı basitleştirmeye yardımcı olur.

Kategoriye Göre Başlıca WRL API'leri

Ana WRL türlerini, işlevlerini ve makrolarını vurgular.

WRL Başvurusu

WRL için başvuru bilgileri içerir.

Hızlı Başvuru (Windows Runtime ve Visual C++)

Kısaca C++/CX özelliklerini açıklar ve Windows Çalışma Zamanı destekler.

Visual C++'ta Windows Çalışma Zamanı Bileşenlerini Kullanma

Temel bir Windows Çalışma Zamanı bileşeni oluşturmak için nasıl C++/CX kullanılacağını gösterir.