Freigeben über


Windows Runtime C++ Template Library (WRL)

Die Windows Runtime C++ Template Library (WRL) ist eine Vorlagenbibliothek, die eine Low-Level-Methode für die Erstellung und Verwendung von Windows-Runtime-Komponenten bereitstellt.

Vorteile

Die WRL erleichtert Ihnen die Implementierung und Nutzung von COM-Komponenten (Component Object Model). Sie stellt Verwaltungstechniken wie die Verweiszählung bereit, mit der die Lebensdauer der Objekte verwaltet wird, oder wie Tests von HRESULT-Werten, mit denen festgestellt wird, ob ein Vorgang erfolgreich war oder einen Fehler verursacht hat. Zur erfolgreichen Verwendung der WRL müssen die folgenden Regeln und Techniken sorgfältig beachtet werden.

Die Komponentenerweiterungen für Visual C++ (C++/CX) ist eine sprachbasierte High-Level Methode zur Verwendung von Windows-Runtime-Komponenten. Sowohl WRL als auch C++/CX vereinfachen die Verfassung von Code für die Windows-Runtime, da Verwaltungsaufgaben automatisch für Sie ausgeführt werden.

Die WRL und die C++/CX bieten unterschiedliche Vorteile. Nachfolgend sind einige Gründe aufgeführt, warum Sie die WRL anstelle der C++/CX verwenden würden:

  • Die WRL fügt nur wenig Abstraktion über die Windows-Runtime-ABI (Application Binary Interface) hinzu; so können Sie den zugrunde liegenden Code besser steuern und Windows-Runtime-APIs besser erstellen oder nutzen.

  • Die C++/CX stellt COM- HRESULT-Werte als Ausnahmen dar. Wenn Sie eine CodeBase geerbt haben, die COM verwendet, oder eine CodeBase, die keine Ausnahmen verwendet, ist die WRL möglicherweise besser zur Arbeit mit der Windows-Runtime geeignet, da keine Ausnahmen verwendet werden müssen.

    Hinweis

    Die WRL verwendet HRESULT-Werte und löst keine Ausnahmen aus.Außerdem verwendet die WRL intelligente Zeiger und das RAII-Muster, um dafür zu sorgen, dass Objekte ordnungsgemäß zerstört werden, wenn der Anwendungscode eine Ausnahme auslöst.Weitere Informationen zu intelligenten Zeigern und RAII finden Sie unter Intelligente Zeiger (Modern C++) und Objekteigene Ressourcen (RAII).

  • Zweck und Entwurf der WRL wurden durch die ATL (Active Template Library) angeregt, eine Gruppe vorlagenbasierter Visual C++-Klassen, die zur Vereinfachung der Programmierung von COM-Objekten dienen. Da die WRL die Windows-Runtime mithilfe von Standard-C++ umschließt, wird die Portierung und die Interaktion mit vielen vorhandenen in ATL geschriebenen COM-Komponenten in die Windows-Runtime erleichtert. Wenn Sie ATL bereits kennen, fällt Ihnen die Programmierung in der WRL möglicherweise leichter.

Erste Schritte

Im Folgenden sind einige Ressourcen aufgeführt, die Ihnen beim schnellen Einstieg in die WRL helfen.

Die WRL im Vergleich mit ATL

Die WRL ähnelt der Active Template Library (ATL), da Sie mit ihr kleine, schnelle COM-Objekte erstellen können. WRL und ATL haben noch andere Konzepte gemeinsam, wie die Definition von Objekten in Modulen, die explizite Registrierung von Schnittstellen und die offene Erstellung von Objekten durch Factorys. Wenn Sie mit ATL vertraut sind, wird Ihnen auch die WRL bekannt vorkommen.

Die WRL unterstützt die COM-Funktionalität, die für Apps für Windows Store erforderlich ist. Daher unterscheidet sie sich von ATL, da die direkte Unterstützung für COM-Funktionen wie Folgende fehlt:

  • Aggregation

  • vordefinierte Implementierungen

  • duale Schnittstellen (IDispatch)

  • Standardenumeratorschnittstellen

  • Verbindungspunkte

  • abtrennbare Schnittstellen

  • OLE-Einbettung

  • ActiveX-Steuerelemente

  • COM+

Konzepte

Die WRL stellt Typen bereit, die einige grundlegende Konzepte darstellen. Im folgenden Abschnitt werden diese Typen beschrieben.

ComPtr

ComPtr ist ein Typ des intelligenten Zeigermechanismus, der die Schnittstelle darstellt, die vom Vorlagenparameter angegeben wird. Mit ComPtr deklarieren Sie eine Variable, die auf die Member eines Objekts zugreifen kann, das von der Schnittstelle abgeleitet wird. ComPtr verwaltet automatisch einen Verweiszähler für den zugrunde liegenden Schnittstellenzeiger und gibt die Schnittstelle frei, wenn der Verweiszähler auf null geht.

RuntimeClass

RuntimeClass stellt eine instanziierte Klasse dar, die einen Satz angegebener Schnittstellen erbt. Ein RuntimeClass-Objekt kann kombinierte Unterstützung für eine oder mehrere Windows-Runtime-COM-Schnittstellen oder einen schwachen Verweis auf eine Komponente bereitstellen.

Modul

Module stellt eine Auflistung von zugehörigen Objekten dar. Ein Module-Objekt verwaltet Klassenfactorys, die Objekte erstellen, und die Registrierung, die anderen Anwendungen die Verwendung eines Objekts ermöglicht.

Rückruf

Die Rückruf-Funktion erstellt ein Objekt, dessen Memberfunktion ein Ereignishandler ist (eine Rückrufmethode). Mit der Callback-Funktion schreiben Sie asynchrone Operationen.

EventSource

Mit EventSource verwalten Sie Delegat-Ereignishandler. Mit der WRL implementieren Sie einen Delegaten, und mit EventSource fügen Sie Delegaten hinzu, entfernen sie und rufen sie auf.

AsyncBase

AsyncBase stellt virtuelle Methoden bereit, die das asynchrone Programmiermodell in der Windows-Runtime darstellen. Überschreiben Sie die Member in dieser Klasse, um eine benutzerdefinierte Klasse zu erstellen, die einen asynchronen Vorgang starten, beenden oder seinen Fortschritt überprüfen kann.

FtmBase

FtmBase stellt ein Freethread-Marshaller-Objekt dar. FtmBase erstellt eine globale Schnittstellentabelle (GIT) und hilft bei der Verwaltung von Marshalling- und Proxyobjekten.

WeakRef

WeakRef ist ein Typ des intelligenten Zeigermechanismus, der einen schwachen Verweis auf ein Objekt darstellt, das möglicherweise zugänglich ist. Ein WeakRef-Objekt kann nur von der Windows-Runtime und nicht von klassischem COM verwendet werden.

Ein WeakRef-Objekt stellt in der Regel ein Objekt dar, dessen Vorhandensein von einem externen Thread oder einer externen Anwendung gesteuert wird. Beispielsweise kann ein WeakRef-Objekt auf ein Dateiobjekt verweisen. Wenn die Datei geöffnet ist, so ist WeakRef gültig, und die referenzierte Datei ist zugänglich. Wenn die Datei hingegen geschlossen ist, so ist WeakRef ungültig, und die Datei ist nicht zugänglich.

Verwandte Themen

Projektvorlage für WRL-Klassenbibliothek

Beschreibt, wie auf die WRL-Klassenbibliotheksprojektvorlage zugegriffen wird. Mit dieser Vorlage wird die Erstellung von Windows-Runtime-Komponenten mit Visual Studio vereinfacht.

Schlüssel-WRL-APIs nach Kategorie

Hebt die primären WRL-Typen, -Funktionen und -Makros hervor.

WRL-Referenz

Enthält Referenzinformationen für die WRL.

Kurzreferenz (Windows Runtime und Visual C++)

Beschreibt kurz die C++/CX-Funktionen, die die Windows-Runtime unterstützen.

Thema zur Verwendung von Windows-Runtime-Komponenten in Visual C++

Zeigt, wie Sie mit der C++/CX eine einfache Windows-Runtime-Komponente erstellen.