STGC 列挙 (wtypes.h)

STGC 列挙定数は、IStorage::Commit メソッドおよび IStream::Commit メソッドでコミット操作を実行するための条件を指定します。

構文

typedef enum tagSTGC {
  STGC_DEFAULT = 0,
  STGC_OVERWRITE = 1,
  STGC_ONLYIFCURRENT = 2,
  STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4,
  STGC_CONSOLIDATE = 8
} STGC;

定数

 
STGC_DEFAULT
値: 0
この条件は 、STGC_CONSOLIDATEで指定することも、この要素の一覧で他の 3 つのフラグを組み合わせて指定することもできます。 この値を使用して、コードの読みやすさを高めます。
STGC_OVERWRITE
値: 1
コミット操作では、既存のデータを上書きして、領域全体の要件を減らすことができます。 この値は、既定値ほど堅牢ではないので、一般的な使用にはお勧めしません。 この場合、古いデータが上書きされた後、新しいデータが完全にコミットされる前に、コミット操作が失敗する可能性があります。 その後、古いバージョンも新しいバージョンのストレージ オブジェクトもそのままではなくなります。





この値は、次の場合に使用できます。


  • ユーザーは、データを失うリスクを負うことになります。

  • メモリ不足の保存シーケンスは、ストレージ オブジェクトをより小さなファイルに安全に保存するために使用されます。

  • 以前のコミット STG_E_MEDIUMFULL返されましたが、既存のデータを上書きすると、ストレージ オブジェクトに変更をコミットするのに十分な領域が提供されます。


コミット操作では、上書きが発生する前に十分な領域が存在することを確認することに注意してください。 したがって、この値を指定した場合でも、領域の要件によりコミット操作が失敗した場合、古いデータは安全です。 ただし、ディスク領域の不足以外の理由でコミット操作が失敗した場合に、 指定されたSTGC_OVERWRITE 値でデータ損失が発生する可能性があります。
STGC_ONLYIFCURRENT
値: 2
ストレージ オブジェクトの複数のユーザーが互いの変更を上書きできないようにします。 コミット操作は、ユーザーが最後にストレージ オブジェクトを開いたので、保存されたストレージ オブジェクトに変更がない場合にのみ発生します。 したがって、保存されたストレージ オブジェクトのバージョンは、ユーザーが編集したのと同じバージョンです。 他のユーザーがストレージ オブジェクトを変更した場合、コミット操作は失敗し、STG_E_NOTCURRENT値が返されます。 この動作をオーバーライドするには、STGC_DEFAULT値を使用して IStorage::Commit メソッドまたは IStream::Commit メソッドをもう一度呼び出します。
STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE
値: 4
書き込み分離ディスク キャッシュへの変更をコミットしますが、キャッシュはディスクに保存しません。 分離書き込みディスク キャッシュでは、ディスクに書き込む操作が実際にディスク キャッシュに書き込まれるため、パフォーマンスが向上します。 キャッシュは最終的にディスクに書き込まれますが、通常は書き込み操作が既に返されるまでは書き込まれません。 パフォーマンスの向上は、キャッシュが保存され、キャッシュ内のデータが失われる前に問題が発生した場合にデータを失うリスクが高くなるという犠牲になります。




この値を指定しない場合、ディスク キャッシュが使用されている場合でも、ルート レベルのストレージ オブジェクトに変更をコミットすることは堅牢です。 2 フェーズのコミット プロセスにより、データはディスク キャッシュだけでなく、ディスクに確実に格納されます。
STGC_CONSOLIDATE
値: 8
Windows 2000 および Windows XP: コミット後にストレージを統合する必要があることを示します。その結果、ディスク上のファイルが小さくなります。 このフラグは、トランザクション モードで開かれた最も外側のストレージ オブジェクトでのみ有効です。 ストリームに対しては無効です。 STGC_CONSOLIDATE フラグは、他の STGC フラグと組み合わせることができます。

注釈

通常のコミット操作 では、STGC_DEFAULT または STGC_OVERWRITESTGC_ONLYIFCURRENTSTGC_DANGEROUSLYCOMMITMERELYTODISKCACHE の組み合わせを指定できます。 STGC_CONSOLIDATEは、他の STGC フラグと共に指定できます。

通常、複数のユーザーが同時にオブジェクトを編集できる場合は、 STGC_ONLYIFCURRENT を使用してストレージ オブジェクトを保護します。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
Header wtypes.h

こちらもご覧ください

IPropertyStorage

IStorage

Istream