次の方法で共有


IEnumSTATPROPSETSTG-Compound ファイルの実装

IEnumSTATPROPSETSTG インターフェイスの複合ファイル実装は、統計プロパティ データを含む STATPROPSETSTG 構造体の配列を列挙するために使用されます。 IPropertySetStorage 実装は統計データを管理し、現在の複合ファイル ストレージ オブジェクトに関連付けられています。

使用するタイミング

IEnumSTATPROPSETSTG のメソッドを呼び出して STATPROPSETSTG 構造体を列挙します。それぞれの構造体は、複合ファイル ストレージ オブジェクトに関連付けられているプロパティ セットの 1 つに関するデータを提供します。

解説

IEnumSTATPROPSETSTG::Next

次の 1 つ以上の STATPROPSETSTG 構造体を取得します (数値は celt パラメーターで指定されます)。 IEnumSTATPROPSETSTG::Next の複合ファイル実装の呼び出しによって提供される STATPROPSETSTG 要素は、次の規則に従います。

  • IEnumSTATPROPSETSTG::Next で STATPROPSETSTG.fmtid を指定できない場合は、そのメンバーにゼロが書き込まれます。 これは、プロパティ セットに定義済みの名前 (\005SummaryInformation など) が指定されておらず、有効な値ではない場合に発生します。
  • DocumentSummaryInformation および UserDefined プロパティ セットは、2 つのプロパティ セット セクションを持つ可能性があるため、特別です。 このプロパティ セットについては、「 DocumentSummaryInformation および UserDefined プロパティ セット」セクションで説明します。 2 番目のセクションは、User-Definedプロパティと呼ばれます。 各セクションは、一意の書式識別子 (FMTID) で識別されます。 プロパティ セットを列挙するために IPropertySetStorage::Enum を使用すると、User-Definedプロパティ セットは列挙されません。

Note

IPropertySetStorage::Create を使用して常にプロパティ セットを作成する場合、ストレージ名に "Character GUID" が作成されるため、IEnumSTATPROPSETSTG::Next はプロパティ セット [STATPROPSETSTG.fmtid] に対して 0 以外の有効な FMTID を返します。

 

  • STATPROPSETSTG.grfFlags メンバーは、プロパティ セットが ANSI であるかどうかを必ずしも反映するとは限りません。 PROPSETFLAG_ANSIが設定されている場合、プロパティ セットは確実に ANSI です。 PROPSETFLAG_ANSIが明確な場合、プロパティ セットは Unicode または Unicode 以外のどちらでもかまいません。これは、開かずに ANSI であるかどうかを判断できないためです。
  • STATPROPSETSTG.grfFlags メンバーには、プロパティ セットが単純かどうかが反映されるため、PROPSETFLAG_NONSIMPLE フラグの設定は常に有効です。
  • IEnumSTATPROPSETSTG::Next で STATPROPSETSTG.clsid を指定できない場合は、すべてのゼロ (CLSID_NULL) に設定されます。 COM 複合ファイルの実装では、プロパティ セットが単純な場合 (PROPSETFLAG_NONSIMPLE フラグが設定されていない場合)、または非単純な場合に、CLSID が明示的に設定されていない場合に発生します。 単純でないプロパティ セットの場合、受け取る CLSID は、基になる IStorage によって維持される CLSID です
  • IEnumSTATPROPSETSTG::Next で時間フィールド [ctime, mtime, atime] を指定できない場合、サポートされていない各時刻は 0 に設定されます。 COM 複合ファイルの実装では、これらの値の取得は、基になる IStorage 実装から取得することに依存します。

IEnumSTATPROPSETSTG::Skip

celt で指定された要素の数をスキップします。 指定した数の要素がスキップされた場合はS_OKを返し、要求された要素より少ない要素がスキップされた場合はS_FALSEを返します。 それ以外の場合は、適切なエラーを返します。

IEnumSTATPROPSETSTG::Reset

カーソルを列挙体の先頭に設定します。 成功した場合は、S_OKを返します。それ以外の場合は、STG_E_INVALIDHANDLEを返します。

IEnumSTATPROPSETSTG::Clone

この列挙子の現在の列挙状態をコピーします。