Partager via


Abandon des opérations VSS

Les événements d’abandon peuvent être générés pendant une opération de sauvegarde dans l’un des cas suivants :

Les abandons ne sont pas pris en charge pour les opérations de restauration.

Gestion du demandeur et création d’événements d’abandon

Une instance de l’interface IVSSBackupComponents ne peut être utilisée que pour une seule sauvegarde. Par conséquent, si une erreur se produit lors du traitement d’une sauvegarde, il est généralement préférable de libérer la instance actuelle et de recommencer.

Un demandeur doit indiquer explicitement qu’il abandonne une opération de sauvegarde (à l’aide d’IVssBackupComponents::AbortBackup) uniquement après la préparation réelle d’une sauvegarde, impliquant des enregistreurs ou la création d’un cliché instantané.

En effet, cela signifie que chaque fois qu’un demandeur doit arrêter une opération de sauvegarde après avoir généré un événement PrepareForBackup en appelant IVssBackupComponents::P repareForBackup, il doit appeler IVssBackupComponents::AbortBackup et attendre son retour avant de publier les instance IVSSBackupComponents actuels.

Par exemple, si un enregistreur a opposé son veto à une opération de sauvegarde, un demandeur doit utiliser IVssBackupComponents::AbortBackup pour informer tous les autres rédacteurs que l’opération de sauvegarde ne sera pas terminée.

Avant d’appeler PrepareForBackup, ou si l’appel à PrepareForBackup échoue, un demandeur peut libérer la instance actuelle de l’interface IVSSBackupComponents sans avoir à générer un événement Abort.

Par exemple, si le instance actuel d’IVSSBackupComponents est utilisé uniquement pour obtenir des informations en appelant IVssBackupComponents::GatherWriterMetadata et en générant un événement Identifier, une fois les informations retournées, la instance d’IVSSBackupComponents peut simplement être publiée.

Un demandeur génère un certain nombre d’événements (PrepareForSnapshot, Freeze, Thaw et PostSnapshot) lorsqu’il appelle IVssBackupComponents::D oSnapshotSet. Lors de la gestion des événements Gel et Dégel, un enregistreur peut échouer et peut générer un événement d’abandon seul. L’échec de la gestion des événements PrepareForSnapshot et PostSnapshot ne génère pas d’événement Abort.

Il n’est pas toujours possible pour un demandeur de savoir si un événement Abort a été généré quand IVssBackupComponents::D oSnapshotSet indique un échec. Par conséquent, un demandeur qui doit arrêter une opération de sauvegarde, car le status d’IVssBackupComponents::D oSnapshotSet indique qu’un problème doit toujours appeler IVssBackupComponents::AbortBackup.

Si un demandeur a appelé IVssBackupComponents::AbortBackup, il n’est pas nécessaire d’appeler IVssBackupComponents::BackupComplete avant de publier un instance d’IVSSBackupComponents.

Gestion des écritures et création d’événements d’abandon

Comme indiqué précédemment, un rédacteur peut recevoir un événement d’abandon d’un demandeur, ou le fournisseur peut en déclencher un lui-même. En outre, il est possible pour un auteur de recevoir plusieurs événements d’abandon dans certaines circonstances. Les développeurs writer doivent coder n’importe quelle implémentation de CVssWriter::OnAbort à cet effet.

Lors de la gestion d’un événement d’abandon, un enregistreur doit tenter de restaurer le processus qu’il a géré à son état d’exécution normal, ainsi que d’effectuer la gestion et la journalisation des erreurs.

Cela peut signifier qu’une implémentation de CVssWriter::OnAbort peut devoir effectuer de nombreuses, voire toutes, des mêmes tâches que le gestionnaire d’événements Thaw (CVssWriter::OnThaw) et le gestionnaire d’événements PostSnapshot (CVssWriter::OnPostSnapshot), et ces gestionnaires peuvent être appelés à partir de CVssWriter::OnAbort.