Enumerazione STGC (wtypes.h)

Le costanti di enumerazione STGC specificano le condizioni per l'esecuzione dell'operazione di commit nei metodi IStorage::Commit e IStream::Commit.

Sintassi

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

Costanti

 
STGC_DEFAULT
Valore: 0
È possibile specificare questa condizione con STGC_CONSOLIDATE o una combinazione degli altri tre flag in questo elenco di elementi. Usare questo valore per aumentare la leggibilità del codice.
STGC_OVERWRITE
Valore: 1
L'operazione di commit può sovrascrivere i dati esistenti per ridurre i requisiti di spazio complessivi. Questo valore non è consigliato per l'utilizzo tipico perché non è affidabile come valore predefinito. In questo caso, è possibile che l'operazione di commit abbia esito negativo dopo che i dati precedenti vengono sovrascritti, ma prima che i nuovi dati vengano completamente sottoposti a commit. Quindi, né la versione precedente né la nuova versione dell'oggetto di archiviazione saranno intatte.





È possibile usare questo valore nei casi seguenti:


  • L'utente è disposto a rischiare di perdere i dati.

  • La sequenza di salvataggio a bassa memoria verrà usata per salvare in modo sicuro l'oggetto di archiviazione in un file più piccolo.

  • Un commit precedente restituito STG_E_MEDIUMFULL, ma sovrascrivendo i dati esistenti sarebbe disponibile spazio sufficiente per eseguire il commit delle modifiche all'oggetto di archiviazione.


Tenere presente che l'operazione di commit verifica che esista uno spazio adeguato prima che si verifichi una sovrascrittura. Pertanto, anche con questo valore specificato, se l'operazione di commit ha esito negativo a causa dei requisiti di spazio, i dati precedenti sono sicuri. È tuttavia possibile che la perdita di dati si verifichi con il valore STGC_OVERWRITE specificato se l'operazione di commit ha esito negativo per qualsiasi motivo diverso dalla mancanza di spazio su disco.
STGC_ONLYIFCURRENT
Valore: 2
Impedisce a più utenti di un oggetto di archiviazione di sovrascrivere le modifiche apportate. L'operazione di commit si verifica solo se non sono state apportate modifiche all'oggetto di archiviazione salvato perché l'utente l'ha aperta di recente. Pertanto, la versione salvata dell'oggetto di archiviazione è la stessa versione modificata dall'utente. Se altri utenti hanno modificato l'oggetto di archiviazione, l'operazione di commit ha esito negativo e restituisce il valore STG_E_NOTCURRENT. Per eseguire l'override di questo comportamento, chiamare nuovamente il metodo IStorage::Commit o IStream::Commit usando il valore STGC_DEFAULT .
STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE
Valore: 4
Esegue il commit delle modifiche apportate a una cache disco write-behind, ma non salva la cache nel disco. In una cache del disco write-behind l'operazione che scrive effettivamente su disco scrive in una cache del disco, aumentando così le prestazioni. La cache viene scritta nel disco, ma in genere non fino a quando l'operazione di scrittura non è già stata restituita. L'aumento delle prestazioni comporta un aumento del rischio di perdita dei dati se si verifica un problema prima del salvataggio della cache e i dati nella cache vengono persi.




Se non si specifica questo valore, il commit delle modifiche agli oggetti di archiviazione a livello radice è affidabile anche se viene usata una cache su disco. Il processo di commit in due fasi garantisce che i dati vengano archiviati sul disco e non solo nella cache del disco.
STGC_CONSOLIDATE
Valore: 8
Windows 2000 e Windows XP: indica che una risorsa di archiviazione deve essere consolidata dopo il commit, causando un file più piccolo su disco. Questo flag è valido solo nell'oggetto di archiviazione più esterno aperto in modalità transacted. Non è valido per i flussi. Il flag STGC_CONSOLIDATE può essere combinato con qualsiasi altro flag STGC.

Commenti

È possibile specificare STGC_DEFAULT o una combinazione di STGC_OVERWRITE, STGC_ONLYIFCURRENT e STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE per le normali operazioni di commit. È possibile specificare STGC_CONSOLIDATE con qualsiasi altro flag STGC.

In genere, usare STGC_ONLYIFCURRENT per proteggere l'oggetto di archiviazione nei casi in cui più utenti possono modificare l'oggetto contemporaneamente.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Intestazione wtypes.h

Vedi anche

IPropertyStorage

IStorage

IStream