STGC
列挙型フラグメンバー 5
| 名前 | 10進 | 16進 | 説明 |
|---|---|---|---|
| STGC_DEFAULT | 0 | 0x0 | この条件は、STGC_CONSOLIDATE と共に指定することも、この一覧にある他の 3 つのフラグの任意の組み合わせと共に指定することもできます。コードの可読性を高めるためにこの値を使用します。 |
| STGC_OVERWRITE | 1 | 0x1 | コミット操作は、全体として必要な領域を減らすために既存のデータを上書きできます。この値は既定値ほど堅牢ではないため、通常の用途では推奨されません。この場合、古いデータが上書きされた後、新しいデータが完全にコミットされる前にコミット操作が失敗する可能性があります。そのときは、ストレージオブジェクトの古いバージョンも新しいバージョンも無傷では残りません。 この値は次の場合に使用できます。
|
| STGC_ONLYIFCURRENT | 2 | 0x2 | ストレージオブジェクトの複数のユーザーが互いの変更を上書きすることを防ぎます。コミット操作は、ユーザーが最後にストレージオブジェクトを開いてから、保存されているストレージオブジェクトに変更が加えられていない場合にのみ実行されます。したがって、保存されるバージョンのストレージオブジェクトは、そのユーザーが編集していたバージョンと同じになります。他のユーザーがストレージオブジェクトを変更していた場合、コミット操作は失敗し、STG_E_NOTCURRENT 値を返します。この動作を無視するには、STGC_DEFAULT 値を使用して IStorage::Commit メソッドまたは IStream::Commit メソッドを再度呼び出します。 |
| STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE | 4 | 0x4 | 変更をライトビハインドディスクキャッシュにコミットしますが、キャッシュをディスクに保存はしません。ライトビハインドディスクキャッシュでは、ディスクへの書き込み操作が実際にはディスクキャッシュへの書き込みになるため、パフォーマンスが向上します。キャッシュは最終的にディスクへ書き込まれますが、通常は書き込み操作が既に制御を返した後になります。このパフォーマンス向上の代償として、キャッシュが保存される前に問題が発生してキャッシュ内のデータが失われた場合に、データを失うリスクが高まります。 この値を指定しない場合、ルートレベルのストレージオブジェクトへの変更のコミットは、ディスクキャッシュが使用されていても堅牢です。2 段階コミットプロセスにより、データがディスクキャッシュだけでなくディスクに格納されることが保証されます。 |
| STGC_CONSOLIDATE | 8 | 0x8 | Windows 2000 および Windows XP: コミット後にストレージを統合し、ディスク上のファイルを小さくすることを示します。このフラグは、トランザクションモードで開かれた最も外側のストレージオブジェクトに対してのみ有効です。ストリームに対しては無効です。STGC_CONSOLIDATE フラグは、他の任意の STGC フラグと組み合わせることができます。 |
公式ドキュメント
STGC 列挙型の定数は、 IStorage::Commit および IStream::Commit メソッドでコミット操作を実行する際の条件を指定します。
解説(Remarks)
通常のコミット操作では、STGC_DEFAULT を指定するか、STGC_OVERWRITE、STGC_ONLYIFCURRENT、STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE の任意の組み合わせを指定できます。STGC_CONSOLIDATE は、他の任意の STGC フラグと共に指定できます。
通常は、複数のユーザーが同時に編集できる場合にストレージオブジェクトを保護するために STGC_ONLYIFCURRENT を使用します。
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 Enumimport 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* = 8enum 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)。