次の方法で共有


Windows ランタイム C++ テンプレート ライブラリ (WRL)

Windows ランタイム C++ テンプレート ライブラリ (WRL) は Windows ランタイム のコンポーネントの作成、使用する低レベルの方法を提供するテンプレート ライブラリです。

利点

WRL は実装により簡単に作成し、コンポーネント オブジェクト モデル ((COM) のコンポーネントを実装します。これは、操作が成功したか失敗したかどうかを判断するためにオブジェクトと HRESULT の比較値の有効期間を管理するために参照カウントようにハウスキーピングの方法を提供します。正常に WRLを使用するには、慎重にこれらの規則やテクノロジに従う必要があります。

Visual C++ コンポーネント拡張 (C++/CX) は Windows ランタイム コンポーネントを使用する、より高レベルの言語ベースの方法です。WRL と C++/CX は、自動的にのためのハウスキーピングのタスクを実行することによって Windows ランタイム のコードの記述が簡単になります。

WRLC++/CX とは異なる利点があります。、C++/CXの代わりに WRL を使用できるいくつかの原因を次に示します。:

  • WRL がより効率的に Windows ランタイム API を作成または使用する基になるコードを制御できるようにする Windows ランタイム の ABI (ABI) 上の抽象化を追加します。

  • C++/CX が例外として COM HRESULT の値を表します。COM、例外を使用しない 1 を使用するコード ベースを継承する場合、例外を使用する必要がないため WRL が Windows ランタイム を使用するわかりやすい方法であることに気付くことがあります。

    [!メモ]

    WRL は HRESULT の値を使用して、例外はスローされません。また、アプリケーションのコードが例外をスローするとオブジェクトを正しく破棄されることを保証する WRL 使用するためのスマート ポインターと RAII パターン。スマート ポインターと RAII に関する詳細については、スマート ポインター (Modern C++)リソースを所有するオブジェクト (RAII)を参照してください。

  • WRL の目的と設計は、COM オブジェクトのプログラミングを簡単にする、テンプレート ベースの一連の C++ クラスです (Active Template Library) (ATL) によって、促されます。Windows ランタイムをラップするために WRL が標準 C++ を使用するため Windows ランタイムに ATL で記述された多くの既存の COM コンポーネントでより簡単に移植および操作できます。既に ATL がわかっている場合は、WRL のプログラミングが容易であることに気付くことがあります。

作業の開始

役立つあるリソースを次に、WRL をすばやく取得するを使用します。

WRL は、ATL に比較します

WRL は方が速い COM オブジェクトを作成できるため (Active Template Library) (ATL) に似ています。WRL と ATL は、ファクトリを使用して、モジュールのオブジェクトの定義、インターフェイスを明示的に登録、および開いているオブジェクトの作成などの概念を共有します。ATL に慣れている場合は WRL と快適な場合があります。

WRL は Windows ストア の apps に必要な COM 機能をサポートします。したがって、ATL と COM 機能の直接サポートなどの省略されるためです:

  • 集計

  • ストック実装

  • デュアルインター フェイス (IDispatch)

  • 標準列挙子インターフェイス

  • コネクション ポイント

  • インターフェイスを切り取って。

  • OLE 埋め込み

  • ActiveX コントロール

  • COM+

概念

WRL はいくつかの基本概念を表す型が用意されています。以下のセクションでは、これらの型について説明します。

Hh438466.collapse_all(ja-jp,VS.110).gifComPtr

ComPtr は、テンプレート パラメーターで指定されたインターフェイスを表す スマート ポインターの 型です。インターフェイスから派生オブジェクトのメンバーにアクセスできる変数を宣言するには ComPtr を使用します。ComPtr が自動的に参照カウントがゼロになると基のインターフェイス ポインターの参照カウントを保持し、インターフェイスを解放します。

Hh438466.collapse_all(ja-jp,VS.110).gifRuntimeClass

RuntimeClass は、個々のインターフェイスを継承するインスタンス化されたクラスを表します。RuntimeClass のオブジェクトは一つ以上の Windows ランタイム の COM インターフェイスのサポートの組み合わせ、またはコンポーネントへの弱い参照を提供できます。

Hh438466.collapse_all(ja-jp,VS.110).gifModule

[モジュール] は、関連するオブジェクトのコレクションを表します。Module のオブジェクトでオブジェクトを作成、登録を管理するオブジェクトを使用する他のアプリケーションを有効にするクラス ファクトリ。

Hh438466.collapse_all(ja-jp,VS.110).gifコールバック

コールバック の関数は、メンバー関数がコールバック メソッド (イベント ハンドラー) であるオブジェクトを作成します。非同期操作を書き込むに Callback 関数を使用します。

Hh438466.collapse_all(ja-jp,VS.110).gifEventSource

EventSource が デリゲートの イベント ハンドラーを管理するために使用されます。デリゲートを実装するために WRL を使用してデリゲートを追加、削除、起動に EventSource を使用します。

Hh438466.collapse_all(ja-jp,VS.110).gifAsyncBase

AsyncBase は Windows ランタイム の非同期プログラミング モデルを表す仮想メソッドを提供します。非同期操作の進行状況を起動、停止、またはチェックインするカスタム クラスを作成するには、このクラスのメンバーをオーバーライドします。

Hh438466.collapse_all(ja-jp,VS.110).gifFtmBase

FtmBase は、フリー スレッド マーシャラー オブジェクトを表します。FtmBase はグローバル インターフェイス テーブル (GIT) を作成し、ヘルプは、マーシャリングとプロキシ オブジェクトを管理します。

Hh438466.collapse_all(ja-jp,VS.110).gifWeakRef

WeakRef はアクセスできない場合があり、可能性のあるオブジェクトを参照する、弱い参照を表すスマート ポインターの型です。WeakRef のオブジェクトは Windows ランタイムだけであり、従来の COM で使用できます。

WeakRef のオブジェクトは、通常、既存のが外部スレッドまたはアプリケーションによって制御されるオブジェクトを表します。たとえば、WeakRef のオブジェクトには、ファイル オブジェクトを参照できます。ファイルが開いている場合、WeakRef が有効になり、参照ファイルにアクセスできます。ただし、ファイルを閉じると、WeakRef は無効であり、ファイルはアクセスできません。

関連トピック

WRL クラス ライブラリ プロジェクト テンプレート

WRL クラス ライブラリ プロジェクトのテンプレートにアクセスする方法について説明します。このテンプレートは Windows ランタイム コンポーネントを作成するために Visual Studio を使用するタスクを簡略化できます。

カテゴリ別の主要な WRL API

WRL の主要な型、関数とマクロが強調表示されます。

WRL リファレンス

WRLに関するリファレンス情報を示します。

クイック リファレンス (Windows ランタイムおよび Visual C++)

簡単に説明すると Windows ランタイムをサポートする C++/CX の機能について説明します。

Visual C++ の Windows のランタイム コンポーネントを使用する

C++/CX を Windows ランタイム の基本コンポーネントを作成する方法を示します。