Méthode CVssWriter::OnPostSnapshot (vswriter.h)

La méthode OnPostSnapshot est appelée par un writer à la suite d’un événement PostSnapshot .

OnPostSnapshot est une méthode virtuelle. Elle est implémentée par la classe de base CVssWriter , mais peut être remplacée par des classes dérivées.

Syntaxe

bool OnPostSnapshot(
  [in] IVssWriterComponents *pComponent
);

Paramètres

[in] pComponent

Pointeur vers un objet IVssWriterComponents passé par VSS pour fournir à la méthode l’accès aux informations de composant de l’enregistreur. La valeur de ce paramètre peut être NULL si le demandeur ne prend pas en charge les composants (si CVssWriter::AreComponentsSelected retourne false).

Valeur retournée

Comme implémenté par la classe de base, OnPostSnapshot retourne toujours true.

Toute autre implémentation de cette méthode doit retourner true , sauf en cas d’erreur irrécupérable. Si une erreur irrécupérable se produit, la méthode doit appeler la méthode CVssWriter::SetWriterFailure pour fournir une description de l’échec avant de retourner false. Si une erreur non irrécupérable se produit, la méthode doit toujours appeler SetWriterFailure , mais retourner true. Si l’erreur est due à un problème temporaire, la méthode doit spécifier VSS_E_WRITERERROR_RETRYABLE dans l’appel à SetWriterFailure.

Dans tous les cas où une défaillance se produit, la méthode doit écrire un événement dans le journal des événements pour signaler la raison exacte de l’échec.

Remarques

L’implémentation par défaut de cette méthode par la classe de base CVssWriter retourne true sans effectuer d’autre opération.

CVssWriter::OnPostSnapshot est généralement utilisé pour traiter toutes les mises à jour finales par l’enregistreur vers les métadonnées des composants de sauvegarde et propre (par exemple, la suppression de fichiers temporaires).

Si une sauvegarde incrémentielle ou différentielle est effectuée, l’enregistreur peut appeler IVssComponent::GetPreviousBackupStamp et IVssComponent::SetBackupStamp. Pour plus d’informations, consultez Rôle d’enregistreur dans sauvegarde de magasins complexes. Une autre méthode qui peut être appelée à ce stade est IVssComponent::AddDifferencedFilesByLastModifyTime.

La plupart du travail nécessaire pour rétablir le fonctionnement normal de l’enregistreur (inversion des actions de CVssWriter::OnPrepareSnapshot et CVssWriter::OnFreeze) est généralement effectué dans CVssWriter::OnThaw, et non dans OnPostSnapshot.

Les enregistreurs ne doivent jamais lever d’exception de cette méthode ou de toute autre méthode de rappel CVssWriter(Ex)::OnXxx .

Si l’indicateur de VSS_VOLSNAP_ATTR_AUTORECOVER est défini dans le contexte du cliché instantané, l’enregistreur doit effectuer toute récupération requise (par exemple, restauration des transactions incomplètes) afin que le composant soit utilisable sur une copie en lecture seule pour l’exploration de données (sans ajouter de charge au serveur actif) ou la restauration (par exemple, pour restaurer des éléments sélectionnés à partir d’une base de données).

Pour récupérer le nom du volume du cliché instantané d’un volume, procédez comme suit :

  1. Appelez la méthode CVssWriter::GetCurrentVolumeCount pour interroger le nombre de volumes dans le jeu de clichés instantanés.
  2. Appelez la méthode CVssWriter::GetCurrentVolumeArray pour énumérer les noms d’origine des volumes dans le jeu de clichés instantanés.
  3. Appelez CVssWriter::GetSnapshotDeviceName pour récupérer le nom du volume de cliché instantané.
Si cette méthode appelle la méthode CVssWriterEx2::GetSessionId, CVssWriter::SetWriterFailure ou CVssWriterEx2::SetWriterFailureEx , elle doit le faire dans le même thread qui a appelé cette méthode. Pour plus d’informations, consultez Gestion des événements writer.

Configuration requise

   
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête vswriter.h (inclure Vss.h, VsWriter.h)
Bibliothèque VssApi.lib

Voir aussi

CVssWriter

CVssWriter::GetSnapshotDeviceName

CVssWriter::OnPreRestore

CVssWriter::OnPrepareBackup

CVssWriter::SetWriterFailure

CvssWriter::OnThaw

IVssWriterComponents