Win32 API 日本語リファレンス
ホームSystem.Com › STGC

STGC

列挙型フラグ
基底型i4

メンバー 5

名前10進16進説明
STGC_DEFAULT00x0この条件は、STGC_CONSOLIDATE と共に指定することも、この一覧にある他の 3 つのフラグの任意の組み合わせと共に指定することもできます。コードの可読性を高めるためにこの値を使用します。
STGC_OVERWRITE10x1

コミット操作は、全体として必要な領域を減らすために既存のデータを上書きできます。この値は既定値ほど堅牢ではないため、通常の用途では推奨されません。この場合、古いデータが上書きされた後、新しいデータが完全にコミットされる前にコミット操作が失敗する可能性があります。そのときは、ストレージオブジェクトの古いバージョンも新しいバージョンも無傷では残りません。

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

  • ユーザーがデータを失うリスクを許容できる場合。
  • 低メモリ保存シーケンスを使用して、ストレージオブジェクトをより小さいファイルに安全に保存する場合。
  • 直前のコミットが STG_E_MEDIUMFULL を返したが、既存のデータを上書きすればストレージオブジェクトへの変更をコミットするのに十分な領域が得られる場合。
なお、コミット操作は、上書きが行われる前に十分な領域があることを確認します。したがって、この値を指定していても、領域不足が原因でコミット操作が失敗した場合は古いデータは安全です。ただし、ディスク領域の不足以外の理由でコミット操作が失敗した場合は、STGC_OVERWRITE 値を指定しているとデータが失われることがあります。
STGC_ONLYIFCURRENT20x2ストレージオブジェクトの複数のユーザーが互いの変更を上書きすることを防ぎます。コミット操作は、ユーザーが最後にストレージオブジェクトを開いてから、保存されているストレージオブジェクトに変更が加えられていない場合にのみ実行されます。したがって、保存されるバージョンのストレージオブジェクトは、そのユーザーが編集していたバージョンと同じになります。他のユーザーがストレージオブジェクトを変更していた場合、コミット操作は失敗し、STG_E_NOTCURRENT 値を返します。この動作を無視するには、STGC_DEFAULT 値を使用して IStorage::Commit メソッドまたは IStream::Commit メソッドを再度呼び出します。
STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE40x4

変更をライトビハインドディスクキャッシュにコミットしますが、キャッシュをディスクに保存はしません。ライトビハインドディスクキャッシュでは、ディスクへの書き込み操作が実際にはディスクキャッシュへの書き込みになるため、パフォーマンスが向上します。キャッシュは最終的にディスクへ書き込まれますが、通常は書き込み操作が既に制御を返した後になります。このパフォーマンス向上の代償として、キャッシュが保存される前に問題が発生してキャッシュ内のデータが失われた場合に、データを失うリスクが高まります。

この値を指定しない場合、ルートレベルのストレージオブジェクトへの変更のコミットは、ディスクキャッシュが使用されていても堅牢です。2 段階コミットプロセスにより、データがディスクキャッシュだけでなくディスクに格納されることが保証されます。

STGC_CONSOLIDATE80x8Windows 2000 および Windows XP: コミット後にストレージを統合し、ディスク上のファイルを小さくすることを示します。このフラグは、トランザクションモードで開かれた最も外側のストレージオブジェクトに対してのみ有効です。ストリームに対しては無効です。STGC_CONSOLIDATE フラグは、他の任意の STGC フラグと組み合わせることができます。

公式ドキュメント

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

解説(Remarks)

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

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

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

列挙メンバーの定義。HSP タブは #define global(値は16進)。

typedef enum STGC : int {
    STGC_DEFAULT = 0,
    STGC_OVERWRITE = 1,
    STGC_ONLYIFCURRENT = 2,
    STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4,
    STGC_CONSOLIDATE = 8
} STGC;
[Flags]
public enum STGC : int
{
    STGC_DEFAULT = 0,
    STGC_OVERWRITE = 1,
    STGC_ONLYIFCURRENT = 2,
    STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4,
    STGC_CONSOLIDATE = 8,
}
<Flags>
Public Enum STGC As Integer
    STGC_DEFAULT = 0
    STGC_OVERWRITE = 1
    STGC_ONLYIFCURRENT = 2
    STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4
    STGC_CONSOLIDATE = 8
End Enum
import enum

class STGC(enum.IntFlag):
    STGC_DEFAULT = 0
    STGC_OVERWRITE = 1
    STGC_ONLYIFCURRENT = 2
    STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4
    STGC_CONSOLIDATE = 8
// STGC (flags)
pub const STGC_DEFAULT: i32 = 0;
pub const STGC_OVERWRITE: i32 = 1;
pub const STGC_ONLYIFCURRENT: i32 = 2;
pub const STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE: i32 = 4;
pub const STGC_CONSOLIDATE: i32 = 8;
// STGC
const (
	STGC_DEFAULT int32 = 0
	STGC_OVERWRITE int32 = 1
	STGC_ONLYIFCURRENT int32 = 2
	STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE int32 = 4
	STGC_CONSOLIDATE int32 = 8
)
const
  STGC_DEFAULT = 0;
  STGC_OVERWRITE = 1;
  STGC_ONLYIFCURRENT = 2;
  STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4;
  STGC_CONSOLIDATE = 8;
// STGC
pub const STGC_DEFAULT: i32 = 0;
pub const STGC_OVERWRITE: i32 = 1;
pub const STGC_ONLYIFCURRENT: i32 = 2;
pub const STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE: i32 = 4;
pub const STGC_CONSOLIDATE: i32 = 8;
const
  STGC_DEFAULT* = 0
  STGC_OVERWRITE* = 1
  STGC_ONLYIFCURRENT* = 2
  STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE* = 4
  STGC_CONSOLIDATE* = 8
enum STGC : int {
    STGC_DEFAULT = 0,
    STGC_OVERWRITE = 1,
    STGC_ONLYIFCURRENT = 2,
    STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4,
    STGC_CONSOLIDATE = 8,
}
#define global STGC_DEFAULT                            0x0
#define global STGC_OVERWRITE                          0x1
#define global STGC_ONLYIFCURRENT                      0x2
#define global STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE 0x4
#define global STGC_CONSOLIDATE                        0x8
; ※フラグ列挙型。ビットORで組み合わせ可(例: FOO|BAR)。