Share via


IPropertySetStorage-Compound ファイルの実装

COM 複合ファイル ストレージ オブジェクトの実装には、IPropertyStorage、1 つの永続的なプロパティ セットを管理するインターフェイス、および永続的なプロパティ セットのグループを管理するインターフェイスである IPropertySetStorage の両方の実装が含まれています。

IPropertySetStorage の複合ファイル実装へのポインターを取得するには、識別子IID_IStorageのヘッダー定義名を riid パラメーターとして指定するか、StgCreateStorageEx または StgOpenStorageEx 関数を使用します。 どちらの場合も、 stgfmt パラメーターとして STGFMT_STORAGE を指定します。 ( stgOpenStorageEx の場合は、STGFMT_ANYを指定することもできます)。また、 riid パラメーターとして、IID_IPropertySetStorageインターフェイス識別子 (IID) のヘッダー定義名を指定します。 どちらの関数も、オブジェクト IPropertySetStorage インターフェイスへのポインターを提供します。

複合ファイル実装へのポインターを取得するもう 1 つの方法は、識別子IID_IStorageのヘッダー定義名を riid パラメーターとして指定するか、 StgCreateDocfile または StgOpenStorage 関数を使用することです。 これにより、オブジェクト IStorage インターフェイスへのポインターが提供されます。 永続的なプロパティ セットを処理する場合は、IPropertySetStorage インターフェイスに対して IStorage::QueryInterface を呼び出します。

IPropertySetStorage を使用するタイミング

IPropertySetStorage のメソッドを呼び出して、現在の複合ファイル プロパティ セット ストレージにプロパティ セットを作成、開く、または削除します。 また、ストレージ内のプロパティ セットを列挙するために使用できる列挙子へのポインターを提供するメソッド IPropertySetStorage::Enum もあります。

メソッド

IPropertySetStorage::Create

現在の複合ファイル ストレージに新しいプロパティ セットを作成し、戻り値として IPropertyStorage 複合ファイル実装へのインターフェイス ポインターを提供します。 この実装では、プロパティ セットは、PROPSETFLAG_NONSIMPLEが指定されている場合にのみ処理できます。 このメソッドでは、 grfMode パラメーターで指定された共有モードをSTGM_SHARE_EXCLUSIVEし、アクセス モードをSTGM_READまたはSTGM_READWRITEにする必要があります (STGM_WRITE モードはサポートされていません)。

IPropertySetStorage::Open

現在のプロパティ ストレージ内の既存のプロパティ セットを開きます。 返されると、 IPropertyStorage の複合ファイル実装へのインターフェイス ポインターが提供されます。 このメソッドでは、 grfMode パラメーターで指定された共有モードをSTGM_SHARE_EXCLUSIVEし、アクセス モードをSTGM_READまたはSTGM_READWRITEにする必要があります (STGM_WRITEはサポートされていません)。

IPropertySetStorage::D elete

このプロパティ ストレージ内のプロパティ セットを削除します。

IPropertySetStorage::Enum

STATPROPSETSTG 構造体を列挙するために使用するオブジェクトを作成します。 各 STATPROPSETSTG 構造体は、1 つのプロパティ セットに関するデータを提供します。

解説

Windows 2000 以降では、 IPropertySetStorage の複合ファイル実装で単純モードがサポートされています。 簡易モードは、 StgCreateStorageEx および StgOpenStorageEx 関数のSTGM_SIMPLE フラグを指定することによって示されます。 複合ファイルが単純モードで開かれている場合、関連付けられている IPropertySetStorage の実装は次のように制限されます。

  • 単純なプロパティ セットのみを作成できます。 つまり、IPropertySetStorage::Create メソッドの grfFlags パラメーターにPROPSETFLAG_NONSIMPLE値を指定すると、エラーが発生します。
  • STGM_SIMPLEを使用して StgCreateStorageEx を使用して複合ファイルを作成し、 IPropertySetStorage インターフェイスのクエリを実行した後は、 IPropertySetStorage::Create を 1 回だけ呼び出すことができます。 その後、Create メソッドを再度呼び出す前に、IPropertyStorage インターフェイスを解放する必要があります。 簡易モードの詳細については、「 STGM 定数」を参照してください。
  • StgCreateStorageEx を使用してストレージ オブジェクトを作成した後、IPropertySetStorage::Open メソッドを使用してプロパティ セットを開くことはできません。 代わりに、IPropertySetStorage を照会して Open メソッドを呼び出す前に、StgOpenStorageEx を使用する必要があります。
  • STGM_SIMPLE フラグを使用して StgOpenStorageEx を使用して複合ファイルを開き、 IPropertySetStorage インターフェイスのクエリを実行した後、 IPropertySetStorage::Open を使用して一度に 1 つのプロパティ セットを開くことができます。 また、プロパティ セットが開いている間は、プロパティ セットの合計サイズを大きくできない場合があります。

単純なプロパティ セットはトランザクションできません。 create メソッドと Open メソッドの grfmode パラメーターでSTGM_TRANSACTEDを指定することはできません。ただし、grfFlags パラメーターで PROPSETFLAG_NONSIMPLEを指定する必要もあります。 単純プロパティ セットと非単純プロパティ セットは、上記の単純モードのプロパティ セットとは無関係であることに注意してください。 単純なプロパティ セットと単純でないプロパティ セットの詳細については、「プロパティ セットの ストレージ オブジェクトとストリーム オブジェクト」を参照してください。

注意

DocumentSummaryInformation プロパティ セットと UserDefined プロパティ セットは、2 つのプロパティ セット セクションを持つことがある点で一意です。 詳細については、「 DocumentSummaryInformation および UserDefined プロパティ セット」を参照してください。

 

IPropertyStorage - 複合ファイルの実装

IPropertySetStorage

IPropertyStorage

IStorage::EnumElements

PROPSETFLAG 定数

STATPROPSETSTG