Freigeben über


STGC-Enumeration (wtypes.h)

Die STGC-Enumerationskonstanten geben die Bedingungen für die Ausführung des Commitvorgangs in den Methoden IStorage::Commit und IStream::Commit an .

Syntax

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

Konstanten

 
STGC_DEFAULT
Wert: 0
Sie können diese Bedingung mit STGC_CONSOLIDATE oder einer Kombination der anderen drei Flags in dieser Elementliste angeben. Verwenden Sie diesen Wert, um die Lesbarkeit von Code zu erhöhen.
STGC_OVERWRITE
Wert: 1
Der Commitvorgang kann vorhandene Daten überschreiben, um den Gesamtspeicherbedarf zu reduzieren. Dieser Wert wird für die typische Verwendung nicht empfohlen, da er nicht so robust wie der Standardwert ist. In diesem Fall ist es möglich, dass der Commitvorgang fehlschlägt, nachdem die alten Daten überschrieben wurden, aber bevor die neuen Daten vollständig committet werden. Dann ist weder die alte Version noch die neue Version des Speicherobjekts intakt.





Sie können diesen Wert in den folgenden Fällen verwenden:


  • Der Benutzer ist bereit, den Verlust der Daten zu riskieren.

  • Die Speichersequenz mit geringem Arbeitsspeicher wird verwendet, um das Speicherobjekt sicher in einer kleineren Datei zu speichern.

  • Ein vorheriger Commit wurde STG_E_MEDIUMFULL zurückgegeben, aber das Überschreiben der vorhandenen Daten würde genügend Speicherplatz zum Commit von Änderungen am Speicherobjekt bieten.


Beachten Sie, dass der Commitvorgang überprüft, ob ausreichend Speicherplatz vorhanden ist, bevor ein Überschreiben erfolgt. Wenn also der Commitvorgang aufgrund von Speicherplatzanforderungen fehlschlägt, sind die alten Daten auch bei Angabe dieses Werts sicher. Es ist jedoch möglich, dass ein Datenverlust mit dem angegebenen STGC_OVERWRITE Wert auftritt, wenn der Commitvorgang aus einem anderen Grund als dem Mangel an Speicherplatz fehlschlägt.
STGC_ONLYIFCURRENT
Wert: 2
Verhindert, dass mehrere Benutzer eines Speicherobjekts die Änderungen des anderen überschreiben. Der Commitvorgang tritt nur auf, wenn keine Änderungen am gespeicherten Speicherobjekt vorgenommen wurden, da der Benutzer es zuletzt geöffnet hat. Daher ist die gespeicherte Version des Speicherobjekts dieselbe Version, die der Benutzer bearbeitet hat. Wenn andere Benutzer das Speicherobjekt geändert haben, schlägt der Commitvorgang fehl und gibt den STG_E_NOTCURRENT Wert zurück. Um dieses Verhalten zu überschreiben, rufen Sie die IStorage::Commit- oder IStream::Commit-Methode erneut mithilfe des STGC_DEFAULT-Werts auf.
STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE
Wert: 4
Committ die Änderungen an einem Schreibbehind-Datenträgercache, speichert den Cache jedoch nicht auf dem Datenträger. In einem Schreibbehind-Datenträgercache schreibt der Vorgang, der auf den Datenträger schreibt, tatsächlich in einen Datenträgercache, wodurch die Leistung erhöht wird. Der Cache wird schließlich auf den Datenträger geschrieben, in der Regel jedoch erst, nachdem der Schreibvorgang bereits zurückgegeben wurde. Die Leistungssteigerung geht auf Kosten eines erhöhten Risikos, Daten zu verlieren, wenn ein Problem auftritt, bevor der Cache gespeichert wird und die Daten im Cache verloren gehen.




Wenn Sie diesen Wert nicht angeben, ist das Commit von Änderungen an Speicherobjekten auf Stammebene auch dann stabil, wenn ein Datenträgercache verwendet wird. Der zweistufige Commitprozess stellt sicher, dass Die Daten auf dem Datenträger und nicht nur im Datenträgercache gespeichert werden.
STGC_CONSOLIDATE
Wert: 8
Windows 2000 und Windows XP: Gibt an, dass ein Speicher nach dem Commit konsolidiert werden soll, was zu einer kleineren Datei auf dem Datenträger führt. Dieses Flag ist nur für das äußerste Speicherobjekt gültig, das im Transaktionsmodus geöffnet wurde. Sie ist nicht für Streams gültig. Das STGC_CONSOLIDATE-Flag kann mit allen anderen STGC-Flags kombiniert werden.

Hinweise

Sie können STGC_DEFAULT oder eine Kombination aus STGC_OVERWRITE, STGC_ONLYIFCURRENT und STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE für normale Commitvorgänge angeben. Sie können STGC_CONSOLIDATE mit anderen STGC-Flags angeben.

Verwenden Sie in der Regel STGC_ONLYIFCURRENT , um das Speicherobjekt in Fällen zu schützen, in denen mehrere Benutzer das Objekt gleichzeitig bearbeiten können.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Kopfzeile wtypes.h

Weitere Informationen

IPropertyStorage

IStorage

IStream