Interruzione delle operazioni VSS

Gli eventi di interruzione possono essere generati durante un'operazione di backup in uno dei casi seguenti:

Gli interruzioni non sono supportati per le operazioni di ripristino.

Gestione e creazione di eventi di interruzione

Un'istanza dell'interfaccia IVSSBackupComponents può essere usata per un solo backup, quindi se si verifica un errore nell'elaborazione di un backup, è in genere consigliabile rilasciare l'istanza corrente e iniziare.

Un richiedente deve segnalare in modo esplicito che si interrompe un'operazione di backup (usando IVssBackupComponents::AbortBackup) solo dopo la preparazione effettiva per un backup, che coinvolge writer o la creazione di una copia shadow è stata eseguita.

In modo efficace, ciò significa che ogni volta che un richiedente deve arrestare un'operazione di backup dopo aver generato un evento PrepareForBackup chiamando IVssBackupComponents::P repareForBackup, deve chiamare IVssBackupComponents::AbortBackup e attendere il relativo ritorno prima di rilasciare l'istanza corrente IVSSBackupComponents .

Ad esempio, se un writer ha veto un'operazione di backup, un richiedente deve usare IVssBackupComponents::AbortBackup per notificare a tutti gli altri writer che l'operazione di backup non verrà completata.

Prima di chiamare PrepareForBackup o se la chiamata a PrepareForBackup ha esito negativo, un richiedente può rilasciare l'istanza corrente dell'interfaccia IVSSBackupComponents senza dover generare un evento Abort.

Ad esempio, se l'istanza corrente di IVSSBackupComponents viene usata semplicemente per ottenere informazioni chiamando IVssBackupComponents::GatherWriterMetadata e generando un eventoIdentifi , dopo che le informazioni sono state restituite l'istanza di IVSSBackupComponents può essere semplicemente rilasciata.

Un richiedente genera un numero di eventi (PrepareForSnapshot, Freeze, Thaw e PostSnapshot) quando chiama IVssBackupComponents::D oSnapshotSet. Durante la gestione degli eventi Freeze e Thaw, un writer può avere esito negativo e può generare un evento Abort da solo. Impossibile gestire gli eventi PrepareForSnapshot e PostSnapshot non genera un evento Abort.

Non è sempre possibile che un richiedente sappia se un evento Abort è stato generato quando IVssBackupComponents::D oSnapshotSet indica un errore. Pertanto, un richiedente che deve terminare un'operazione di backup perché lo stato di IVssBackupComponents::D oSnapshotSet indica che un problema deve comunque chiamare IVssBackupComponents::AbortBackup.

Se un richiedente ha chiamato IVssBackupComponents::AbortBackup, non è necessario chiamare IVssBackupComponents::BackupComplete prima di rilasciare un'istanza di IVSSBackupComponents.

Gestione e creazione di eventi di interruzione

Come indicato in precedenza, un writer può ricevere un evento di interruzione da un richiedente o il provider può attivarne uno stesso. Inoltre, è possibile che un writer riceva più eventi di interruzione in determinate circostanze. Gli sviluppatori di writer devono codificare qualsiasi implementazione di CVssWriter::OnAbort con questa mente.

Nella gestione di un evento di interruzione, un writer deve tentare di ripristinare qualsiasi processo gestito allo stato di esecuzione normale, nonché eseguire qualsiasi gestione e registrazione degli errori.

Ciò può significare che un'implementazione di CVssWriter::OnAbort potrebbe dover eseguire molti, se non tutti, delle stesse attività del gestore eventi Thaw (CVssWriter::OnThaw) e il gestore eventi PostSnapshot (CVssWriter::OnPostSnapshot) e questi gestori possono essere chiamati dall'interno di CVssWriter::OnAbort.