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:
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 |