プロパティ セットのストレージ オブジェクトとストリーム オブジェクト

プログラマは、プロパティ セットの作成時に、プロパティ セットをストレージまたはストリームに格納するかどうかを指定します。 grfFlags パラメーターで IPropertySetStorage::Create メソッドに渡されるPROPSETFLAG_NONSIMPLE列挙値は、これを示します。 プロパティ セットを格納する場所を設定すると、COM プロパティ セットと IPropertySetStorage インターフェイスを完全に相互運用するための適切なアプリケーション コントロールが提供されます。

PROPSETFLAG_NONSIMPLE フラグが設定されている場合、プロパティ セットはストレージ オブジェクトに格納され、非simple プロパティ値を書き込むことができます。 非シンプル値には、 VARTYPE がVT_STORAGE、VT_STREAM、VT_STORED_OBJECT、またはVT_STREAMED_OBJECTの値が含まれます。 VARTYPE 値とその使用方法の詳細については、PROPVARIANT 構造体を参照してください。

PROPSETFLAG_NONSIMPLE フラグが設定されていない場合は、単純な値のみをプロパティ セットに書き込むことができます。

Nonsimple プロパティ セットのストレージ オブジェクトでは、Contents という名前のストリームが作成されます。 これはプロパティ セットのプライマリ ストリームであり、すべての単純なプロパティ値を保持します。 Nonsimple プロパティ値 (ストリームとストレージ) は、サブストリームおよびストレージとして設定されたプロパティのメイン ストレージ オブジェクトの下に格納されます。 つまり、これらの非シンプルな値は、Contents ストリームへの兄弟として格納されます。 兄弟ストリームとストレージの名前は実装によって決定され、単純な文字列プロパティの格納方法と同様にコンテンツ ストリームに格納されます。