Metodo CVssWriter::OnFreeze (vswriter.h)
Il metodo OnFreeze viene chiamato da un writer per la ricezione di un evento Freeze all'inizio di un blocco di copia shadow. Un writer usa questo metodo per eseguire operazioni necessarie per partecipare al blocco o al veto del blocco.
OnFreeze è un metodo virtuale puro. Non viene implementato dalla classe di base CVssWriter e deve essere implementato dalle classi derivate.
Sintassi
bool OnFreeze();
Valore restituito
L'implementazione di questo metodo deve restituire true tranne nel caso di un errore irreversibile. Se si verifica un errore irreversibile, il metodo deve chiamare il metodo CVssWriter::SetWriterFailure per fornire una descrizione dell'errore prima di restituire false. Se si verifica un errore non irreversibile, il metodo deve comunque chiamare SetWriterFailure ma restituire true. Se l'errore è causato da un problema temporaneo, il metodo deve specificare VSS_E_WRITERERROR_RETRYABLE nella chiamata a SetWriterFailure.
In tutti i casi in cui si verifica un errore, il metodo deve scrivere un evento nel registro eventi per segnalare il motivo esatto dell'errore.
Commenti
In questo metodo, l'applicazione writer deve entrare in uno stato ben definito compatibile con l'operazione VSS.
In questo metodo, il writer deve completare le operazioni di preparazione finali per supportare la creazione di una copia shadow. Dopo aver creato la copia shadow, il writer riceverà l'evento Thaw e potrà continuare le normali operazioni.
Per impostazione predefinita, la finestra di timeout tra Gli eventi Freeze e Thaw è di 60 secondi. Ovvero, se un evento Thaw non viene ricevuto con la finestra di timeout, verrà generato un evento Abort. I writer possono modificare la finestra di timeout in fase di inizializzazione impostando l'argomento dwTimeoutFreeze su CVssWriter::Initialize.
Il modo in cui un writer prepara una copia shadow dipende in modo elevato dall'applicazione che lo ospita. Alcune applicazioni possono consentire di contenere tutte le scritture e mantenere i dati in uno stato assoluto coerente per questo periodo. Altre applicazioni, come molti database, non possono interrompere il lavoro durante questo periodo, ma possono eseguire azioni, ad esempio il checkpoint dello stato, che possono ridurre il tempo di ripristino per una copia shadow creata durante questa finestra.
Se il writer non può essere inserito in uno stato ben definito per Il blocco, si verifica quanto segue:
- OnFreeze deve restituire false, veto della copia shadow.
- Il writer chiama CVssWriter::SetWriterFailure per fornire una descrizione dell'errore.
- Un evento di interruzione verrà generato al ritorno di OnFreeze di false
La finestra di timeout per la gestione dell'evento Freeze è in genere relativamente breve rispetto a quella per la gestione dell'evento PrepareForSnapshot . Pertanto, gli sviluppatori devono evitare operazioni lunghe in questo metodo. Un uso tipico potrebbe essere quello di sospendere la registrazione dal writer.
È consigliabile gestire tutte le operazioni che richiedono tempo da CVssWriter::OnPrepareSnapshot.
I CVssWriter::OnThaw o CVssWriter::OnAbort verranno chiamati dopo questo metodo.
Se questo metodo chiama il metodo CVssWriterEx2::GetSessionId, CVssWriter::SetWriterFailure o CVssWriterEx2::SetWriterFailureEx , deve farlo nello stesso thread denominato questo metodo. Per altre informazioni, vedere Gestione eventi writer.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | vswriter.h (include Vss.h, VsWriter.h) |
Libreria | VssApi.lib |