stGC 列舉 (wtypes.h)

STGC 列舉常數會指定在 IStorage::CommitIStream::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
認可作業可以覆寫現有的數據,以減少整體空間需求。 不建議針對一般使用方式使用此值,因為它與預設值不一樣強固。 在此情況下,在覆寫舊數據之後,認可作業可能會失敗,但在完全認可新數據之前。 然後,舊版或新版的記憶體物件都不會保持不變。





在下列情況下,您可以使用此值:


  • 用戶願意承擔遺失數據的風險。

  • 低記憶體順序將用來安全地將儲存物件儲存至較小的檔案。

  • 先前的認可 傳回STG_E_MEDIUMFULL,但覆寫現有的數據會提供足夠的空間來認可記憶體對象的變更。


請注意,認可作業會在發生任何覆寫之前確認有足夠的空間存在。 因此,即使指定這個值,如果認可作業因空間需求而失敗,舊的數據也是安全的。 不過,如果認可作業因缺少磁碟空間以外的任何原因而失敗,可能會因為指定的 STGC_OVERWRITE 值而遺失數據。
STGC_ONLYIFCURRENT
值: 2
防止記憶體物件的多個使用者覆寫彼此的變更。 只有在使用者最近開啟儲存的記憶體物件時,才會發生認可作業。 因此,儲存的記憶體物件版本與用戶編輯的版本相同。 如果其他使用者已變更記憶體對象,認可作業會失敗,並傳回STG_E_NOTCURRENT值。 若要覆寫此行為,請使用 STGC_DEFAULT 值再次呼叫 IStorage::CommitIStream::Commit 方法。
STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE
值: 4
認可寫入後置磁碟快取的變更,但不會將快取儲存至磁碟。 在寫入後置磁碟快取中,寫入磁碟的作業實際上會寫入磁碟快取,進而提升效能。 快取最終會寫入磁碟,但通常不會等到寫入作業傳回之後。 如果儲存快取之前發生問題,且快取中的數據遺失,則效能增加會犧牲遺失數據的風險。




如果您未指定此值,則即使使用磁碟快取,認可根層級儲存對象的變更仍會健全。 兩階段認可程式可確保數據儲存在磁碟上,而不只是儲存至磁碟快取。
STGC_CONSOLIDATE
值: 8
Windows 2000 和 Windows XP:指出儲存空間在認可之後應該合併,導致磁碟上的檔案較小。 此旗標只有在已在交易模式中開啟的最外層儲存物件上有效。 它不適用於數據流。 STGC_CONSOLIDATE旗標可以與其他任何 STGC 旗標結合。

備註

您可以指定一般認可作業 的STGC_DEFAULT 或一些 STGC_OVERWRITESTGC_ONLYIFCURRENTSTGC_DANGEROUSLYCOMMITMERELYTODISKCACHE 組合。 您可以使用任何其他 STGC 旗標來指定 STGC_CONSOLIDATE

一般而言,使用 STGC_ONLYIFCURRENT 來保護儲存物件,以防有多個使用者可以同時編輯物件。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
標頭 wtypes.h

另請參閱

IPropertyStorage

IStorage

IStream