ポインターモニカー
ポインター モニカーは、アクティブまたは実行中の状態でのみ存在できるオブジェクトを識別します。 これは、パッシブ状態またはアクティブ状態のいずれかに存在できるオブジェクトを識別するモニカーの他のクラスとは異なります。
たとえば、アプリケーションに永続的な表現がないオブジェクトがあるとします。 通常、アプリケーションのクライアントがそのオブジェクトにアクセスする必要がある場合、クライアントにオブジェクトへのポインターを渡すだけで済みます。 ただし、クライアントがモニカーを期待している場合を想定しています。 オブジェクトはファイルに保存されていないため、ファイル モニカーで識別できません。また、別のオブジェクトに含まれていないため、アイテム モニカーでも識別できません。
代わりに、アプリケーションはポインター モニカー (単にポインターを内部に含むモニカー) を作成し、それをクライアントに渡すことができます。 クライアントはこのモニカーを他のモニカーと同様に扱うことができます。 ただし、クライアントがポインター モニカーで IMoniker::BindToObject を呼び出すと、モニカー コードは実行中のオブジェクト テーブル (ROT) をチェックしたり、ストレージから何も読み込んだりしません。 代わりに、モニカー コードは、モニカー内に格納されているポインターに対して QueryInterface を呼び出すだけです。
ポインター モニカーを使用すると、アクティブまたは実行状態でのみ存在するオブジェクトがモニカー操作に参加し、モニカー クライアントによって使用されるようになります。 ポインター モニカーと他のクラスのモニカの重要な違いの 1 つは、ポインター モニカを永続ストレージに保存できないことです。 その場合、IMoniker::Save メソッドを呼び出すとエラーが返されます。 これは、ポインター モニカーが特殊な状況でのみ役立つことを意味します。 ポインター モニカーを使用する必要がある場合は、CreatePointerMoniker 関数を使用できます。
関連トピック