stGC 列舉 (wtypes.h)
STGC 列舉常數會指定在 IStorage::Commit 和 IStream::Commit 方法中執行認可作業的條件。
Syntax
typedef enum tagSTGC {
STGC_DEFAULT = 0,
STGC_OVERWRITE = 1,
STGC_ONLYIFCURRENT = 2,
STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4,
STGC_CONSOLIDATE = 8
} STGC;
常數
STGC_DEFAULT 值: 0 您可以使用 STGC_CONSOLIDATE來指定此條件,或此元素清單中其他三個旗標的一些組合。 使用此值來增加程序代碼的可讀性。 |
STGC_OVERWRITE 值: 1 認可作業可以覆寫現有的數據,以減少整體空間需求。 不建議針對一般使用方式使用此值,因為它與預設值不一樣強固。 在此情況下,在覆寫舊數據之後,認可作業可能會失敗,但在完全認可新數據之前。 然後,舊版或新版的記憶體物件都不會保持不變。 在下列情況下,您可以使用此值:
請注意,認可作業會在發生任何覆寫之前確認有足夠的空間存在。 因此,即使指定這個值,如果認可作業因空間需求而失敗,舊的數據也是安全的。 不過,如果認可作業因缺少磁碟空間以外的任何原因而失敗,可能會因為指定的 STGC_OVERWRITE 值而遺失數據。 |
STGC_ONLYIFCURRENT 值: 2 防止記憶體物件的多個使用者覆寫彼此的變更。 只有在使用者最近開啟儲存的記憶體物件時,才會發生認可作業。 因此,儲存的記憶體物件版本與用戶編輯的版本相同。 如果其他使用者已變更記憶體對象,認可作業會失敗,並傳回STG_E_NOTCURRENT值。 若要覆寫此行為,請使用 STGC_DEFAULT 值再次呼叫 IStorage::Commit 或 IStream::Commit 方法。 |
STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE 值: 4 認可寫入後置磁碟快取的變更,但不會將快取儲存至磁碟。 在寫入後置磁碟快取中,寫入磁碟的作業實際上會寫入磁碟快取,進而提升效能。 快取最終會寫入磁碟,但通常不會等到寫入作業傳回之後。 如果儲存快取之前發生問題,且快取中的數據遺失,則效能增加會犧牲遺失數據的風險。 如果您未指定此值,則即使使用磁碟快取,認可根層級儲存對象的變更仍會健全。 兩階段認可程式可確保數據儲存在磁碟上,而不只是儲存至磁碟快取。 |
STGC_CONSOLIDATE 值: 8 Windows 2000 和 Windows XP:指出儲存空間在認可之後應該合併,導致磁碟上的檔案較小。 此旗標只有在已在交易模式中開啟的最外層儲存物件上有效。 它不適用於數據流。 STGC_CONSOLIDATE旗標可以與其他任何 STGC 旗標結合。 |
備註
您可以指定一般認可作業 的STGC_DEFAULT 或一些 STGC_OVERWRITE、 STGC_ONLYIFCURRENT和 STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE 組合。 您可以使用任何其他 STGC 旗標來指定 STGC_CONSOLIDATE 。
一般而言,使用 STGC_ONLYIFCURRENT 來保護儲存物件,以防有多個使用者可以同時編輯物件。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
標頭 | wtypes.h |