CVssWriter::OnFreeze-Methode (vswriter.h)

Die OnFreeze-Methode wird von einem Writer aufgerufen, wenn ein Freeze-Ereignis zu Beginn eines Schattenkopiefrierungsvorgangs empfangen wird. Ein Writer verwendet diese Methode, um Vorgänge auszuführen, die erforderlich sind, um am Einfrieren teilzunehmen oder ein Veto gegen das Einfrieren zu haben.

OnFreeze ist eine reine virtuelle Methode. Sie wird nicht von der CVssWriter-Basisklasse implementiert und muss von abgeleiteten Klassen implementiert werden.

Syntax

bool OnFreeze();

Rückgabewert

Die Implementierung dieser Methode muss true zurückgeben, außer im Fall eines schwerwiegenden Fehlers. Wenn ein schwerwiegender Fehler auftritt, muss die -Methode die CVssWriter::SetWriterFailure-Methode aufrufen, um eine Beschreibung des Fehlers bereitzustellen, bevor false zurückgegeben wird. Wenn ein nicht schwerwiegender Fehler auftritt, sollte die Methode weiterhin SetWriterFailure aufrufen, aber true zurückgeben. Wenn der Fehler durch ein vorübergehendes Problem verursacht wird, sollte die Methode VSS_E_WRITERERROR_RETRYABLE im Aufruf von SetWriterFailure angeben.

In allen Fällen, wenn ein Fehler auftritt, sollte die Methode ein Ereignis in das Ereignisprotokoll schreiben, um den genauen Grund für den Fehler zu melden.

Hinweise

Bei dieser Methode sollte sich die Writer-Anwendung in einen klar definierten Zustand versetzen, der mit dem VSS-Vorgang kompatibel ist.

Bei dieser Methode sollte der Writer die letzten Vorbereitungen abschließen, um die Erstellung einer Schattenkopie zu unterstützen. Nachdem die Schattenkopie erstellt wurde, empfängt der Writer das Thaw-Ereignis und kann die normalen Vorgänge fortsetzen.

Standardmäßig beträgt das Timeoutfenster zwischen Freeze- und Thaw-Ereignissen 60 Sekunden. Das heißt, wenn ein Thaw-Ereignis nicht mit dem Timeoutfenster empfangen wird, wird ein Abortereignis generiert. Writer können das Timeoutfenster zur Initialisierungszeit ändern, indem sie das argument dwTimeoutFreeze auf CVssWriter::Initialize festlegen.

Wie sich ein Writer auf eine Schattenkopie vorbereitet, hängt stark von der Anwendung ab, die sie hostet. Einige Anwendungen können es sich leisten, alle Schreibvorgänge zu speichern und die Daten für diesen Zeitraum in einem absolut konsistenten Zustand zu halten. Andere Anwendungen, wie viele Datenbanken, können die Arbeit in diesem Zeitraum nicht beenden, können jedoch Aktionen ausführen, z. B. das Überprüfen ihres Zustands, wodurch die Wiederherstellungszeit für eine Schattenkopie, die während dieses Fensters erstellt wurde, verringert werden kann.

Wenn sich der Writer für das Einfrieren nicht in einen klar definierten Zustand versetzen kann, geschieht Folgendes:

  1. OnFreeze sollte false zurückgeben und die Schattenkopie ein Veto einlegen.
  2. Der Writer ruft CVssWriter::SetWriterFailure auf, um eine Beschreibung des Fehlers bereitzustellen.
  3. Ein Abortereignis wird generiert, wenn onFreezefalse zurückgegeben wird.
Writer sollten niemals eine Ausnahme von dieser Methode oder einer anderen CVssWriter(Ex)::OnXxx-Rückrufmethode auslösen.

Das Timeoutfenster für die Behandlung des Freeze-Ereignisses ist in der Regel relativ kurz im Vergleich zu dem Für die Behandlung des PrepareForSnapshot-Ereignisses . Daher sollten Entwickler langwierige Vorgänge in dieser Methode vermeiden. Eine typische Verwendung kann das Anhalten der Protokollierung durch den Writer sein.

Es wird empfohlen, alle zeitaufwändigen Vorgänge von CVssWriter::OnPrepareSnapshot zu verarbeiten.

Entweder CVssWriter::OnThaw oder CVssWriter::OnAbort wird nach dieser Methode aufgerufen.

Wenn diese Methode die CVssWriterEx2::GetSessionId-, CVssWriter::SetWriterFailure- oder CVssWriterEx2::SetWriterFailureEx-Methode aufruft, muss dies im selben Thread erfolgen, der diese Methode aufgerufen hat. Weitere Informationen finden Sie unter Writer-Ereignisbehandlung.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile vswriter.h (einschließlich Vss.h, VsWriter.h)
Bibliothek VssApi.lib

Weitere Informationen

CVssWriter

CVssWriter::OnAbort

CVssWriter::OnPreRestore

CVssWriter::OnPrepareBackup

CVssWriter::OnPrepareSnapshot

CVssWriter::OnThaw

CVssWriter::SetWriterFailure