次の方法で共有


WeakReference クラス

WRL インフラストラクチャをサポートします。コードから直接使用するためのものではありません。

構文

class WeakReference;

解説

Windows ランタイムまたは クラシック COM で使用できる "弱い参照" を表します。 弱い参照は、アクセスできる場合とできない場合があるオブジェクトを表します。

WeakReference オブジェクトは、オブジェクトへのポインターである "強い参照" と、Resolve() メソッドによって配布された強い参照のコピー数である "強い参照カウント" を保持しています。 強い参照カウントが 0 以外の間、強い参照は有効であり、オブジェクトにアクセスできます。 強い参照カウントが 0 になると、強い参照は無効になり、オブジェクトにアクセスできません。

通常、WeakReference オブジェクトは、外部スレッドや外部アプリケーションによって存在が制御されるオブジェクトを表すために使用されます。 たとえば、ファイル オブジェクトへの参照から WeakReference オブジェクトを構築します。 ファイルが開いている間、強い参照は有効です。 しかし、ファイルが閉じられた場合、強い参照は無効になります。

WeakReference メソッドはスレッド セーフです。

メンバー

パブリック コンストラクター

名前 説明
WeakReference::WeakReference WeakReference クラスの新しいインスタンスを初期化します。
WeakReference::~WeakReference WeakReference クラスの現在のインスタンスの初期化を解除します (破棄します)。

パブリック メソッド

名前 説明
WeakReference::DecrementStrongReference 現在の WeakReference オブジェクトの強い参照カウントをデクリメントします。
WeakReference::IncrementStrongReference 現在の WeakReference オブジェクトの強い参照カウントをインクリメントします。
WeakReference::Resolve 強い参照カウントが 0 以外の場合、指定したポインターを現在の強い参照値に設定します。
WeakReference::SetUnknown 現在の WeakReference オブジェクトの強い参照を、指定したインターフェイス ポインターに設定します。

継承階層

WeakReference

要件

ヘッダー: implements.h

名前空間: Microsoft::WRL::Details

WeakReference::~WeakReference

WRL インフラストラクチャをサポートします。コードから直接使用するためのものではありません。

virtual ~WeakReference();

戻り値

解説

WeakReference クラスの現在のインスタンスの初期化を解除します。

WeakReference::DecrementStrongReference

WRL インフラストラクチャをサポートします。コードから直接使用するためのものではありません。

ULONG DecrementStrongReference();

解説

現在の WeakReference オブジェクトの強い参照カウントをデクリメントします。

強い参照カウントが 0 になると、強い参照は nullptr に設定されます。

戻り値

デクリメントされた強い参照カウント。

WeakReference::IncrementStrongReference

WRL インフラストラクチャをサポートします。コードから直接使用するためのものではありません。

ULONG IncrementStrongReference();

戻り値

インクリメントされた強い参照カウント。

解説

現在の WeakReference オブジェクトの強い参照カウントをインクリメントします。

WeakReference::Resolve

WRL インフラストラクチャをサポートします。コードから直接使用するためのものではありません。

STDMETHOD(Resolve)
   (REFIID riid,
   _Deref_out_opt_ IInspectable **ppvObject
);

パラメーター

riid
インターフェイス ID。

ppvObject
この操作が完了したときの、現在の強い参照のコピー (強い参照数が 0 以外の場合)。

戻り値

  • この操作が成功し、強い参照カウントが 0 の場合は S_OK。 ppvObject パラメーターは nullptr に設定されます。

  • この操作が成功し、強い参照カウントが 0 以外の場合は S_OK。 ppvObject パラメーターは強い参照に設定されます。

  • それ以外の場合は、この操作が失敗した理由を示す HRESULT。

解説

強い参照カウントが 0 以外の場合、指定したポインターを現在の強い参照値に設定します。

WeakReference::SetUnknown

WRL インフラストラクチャをサポートします。コードから直接使用するためのものではありません。

void SetUnknown(
   _In_ IUnknown* unk
);

パラメーター

unk
オブジェクトの IUnknown インターフェイスへのポインター。

解説

現在の WeakReference オブジェクトの強い参照を、指定したインターフェイス ポインターに設定します。

WeakReference::WeakReference

WRL インフラストラクチャをサポートします。コードから直接使用するためのものではありません。

WeakReference();

解説

WeakReference クラスの新しいインスタンスを初期化します。

WeakReference オブジェクトの強い参照ポインターは nullptr に初期化され、強い参照カウントは 1 に初期化されます。