Partager via


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

La méthode OnFreeze est appelée par un enregistreur à la réception d’un événement Freeze au début d’un blocage de cliché instantané. Un enregistreur utilise cette méthode pour effectuer les opérations nécessaires pour participer au gel ou pour mettre son veto au gel.

OnFreeze est une méthode virtuelle pure. Il n’est pas implémenté par la classe de base CVssWriter et doit être implémenté par des classes dérivées.

Syntaxe

bool OnFreeze();

Valeur de retour

L’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 fatale se produit, la méthode doit toujours appeler SetWriterFailure , mais retourner true. Si l’erreur est provoquée par 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

Dans cette méthode, l’application writer doit se placer dans un état bien défini compatible avec l’opération VSS.

Dans cette méthode, l’enregistreur doit effectuer les derniers préparatifs pour prendre en charge la création d’un cliché instantané. Une fois le cliché instantané créé, l’enregistreur reçoit l’événement de dégel et peut poursuivre les opérations normales.

Par défaut, la fenêtre de délai entre les événements Gel et Dégel est de 60 secondes. Autrement dit, si un événement de dégel n’est pas reçu avec la fenêtre de délai d’attente, un événement Abort est généré. Les rédacteurs peuvent modifier la fenêtre de délai d’attente au moment de l’initialisation en définissant l’argument dwTimeoutFreeze sur CVssWriter ::Initialize.

La façon dont un enregistreur se prépare pour un cliché instantané dépend fortement de l’application qui l’héberge. Certaines applications peuvent se permettre de conserver toutes les écritures et de conserver les données dans un état de cohérence absolue pendant cette période. D’autres applications, comme de nombreuses bases de données, ne peuvent pas arrêter le travail pendant cette période, mais peuvent prendre des mesures, telles que le contrôle de leur état, ce qui peut réduire le temps de récupération d’un cliché instantané créé pendant cette fenêtre.

Si l’enregistreur ne peut pas se placer dans un état bien défini pour le freeze, les événements suivants se produisent :

  1. OnFreeze doit retourner false, ce qui met son veto au cliché instantané.
  2. L’enregistreur appelle CVssWriter ::SetWriterFailure pour fournir une description de l’échec.
  3. Un événement Abort sera généré lors du retour onFreeze de false
Les rédacteurs ne doivent jamais lever d’exception à cette méthode ou à toute autre méthode de rappel CVssWriter(Ex) ::On Xxx .

La fenêtre de délai d’attente pour la gestion de l’événement Freeze est généralement relativement courte par rapport à celle de la gestion de l’événement PrepareForSnapshot . Par conséquent, les développeurs doivent éviter les opérations longues dans cette méthode. Une utilisation classique peut être de suspendre la journalisation par l’enregistreur.

Il est recommandé que toutes les opérations chronophages soient gérées par CVssWriter ::OnPrepareSnapshot.

CVssWriter ::OnThaw ou CVssWriter ::OnAbort sera appelé après cette méthode.

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

Condition requise Valeur
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 ::OnAbort

CVssWriter ::OnPreRestore

CVssWriter ::OnPrepareBackup

CVssWriter ::OnPrepareSnapshot

CVssWriter ::OnThaw

CVssWriter ::SetWriterFailure