Метод CVssWriter::OnPostSnapshot (vswriter.h)

Метод OnPostSnapshot вызывается модулем записи после события PostSnapshot .

OnPostSnapshot — это виртуальный метод. Он реализуется базовым классом CVssWriter , но может быть переопределен производными классами.

Синтаксис

bool OnPostSnapshot(
  [in] IVssWriterComponents *pComponent
);

Параметры

[in] pComponent

Указатель на объект IVssWriterComponents , передаваемый VSS для предоставления методу доступа к сведениям о компоненте модуля записи. Значение этого параметра может иметь значение NULL, если инициатор запроса не поддерживает компоненты (если функция CVssWriter::AreComponentsElected возвращает значение false).

Возвращаемое значение

Как и реализовано базовым классом, OnPostSnapshot всегда возвращает значение true.

Любая другая реализация этого метода должна возвращать значение true , за исключением случаев неустранимой ошибки. При возникновении неустранимой ошибки метод должен вызвать метод CVssWriter::SetWriterFailure , чтобы предоставить описание сбоя, прежде чем возвращать значение false. Если возникает некритичная ошибка, метод должен по-прежнему вызывать SetWriterFailure, но возвращатьзначение true. Если ошибка вызвана временной проблемой, метод должен указать VSS_E_WRITERERROR_RETRYABLE в вызове Метода SetWriterFailure.

Во всех случаях, когда происходит сбой, метод должен записывать событие в журнал событий, чтобы сообщить точную причину сбоя.

Комментарии

Реализация этого метода по умолчанию базовым классом CVssWriter возвращает значение true без выполнения каких-либо других операций.

CVssWriter::OnPostSnapshot обычно используется для обработки всех окончательных обновлений модуля записи метаданных компонентов резервной копии и очистки (например, удаления временных файлов).

Если выполняется добавочное или разностное резервное копирование, модуль записи может вызвать IVssComponent::GetPreviousBackupStamp и IVssComponent::SetBackupStamp. Дополнительные сведения см. в разделе Роль записи в резервном копировании сложных хранилищ. Еще одним методом, который можно вызвать в настоящее время, является IVssComponent::AddDifferencedFilesByLastModifyTime.

Большая часть работы, необходимой для возврата модуля записи в нормальную работу (отмена действий CVssWriter::OnPrepareSnapshot и CVssWriter::OnFreeze), обычно выполняется в CVssWriter::OnThaw, а не в OnPostSnapshot.

Записи никогда не должны вызывать исключение из этого метода или любого другого метода обратного вызова CVssWriter(Ex)::OnXxx .

Если в контексте теневой копии установлен флаг VSS_VOLSNAP_ATTR_AUTORECOVER , модуль записи должен выполнить любое необходимое восстановление (например, откат любых незавершенных транзакций), чтобы компонент можно было использовать в копии только для чтения для интеллектуального анализа данных (без добавления нагрузки на динамический сервер) или для восстановления (например, для восстановления выбранных элементов из базы данных).

Чтобы получить имя теневой копии тома, выполните следующие действия.

  1. Вызовите метод CVssWriter::GetCurrentVolumeCount , чтобы запросить количество томов в наборе теневого копирования.
  2. Вызовите метод CVssWriter::GetCurrentVolumeArray , чтобы перечислить исходные имена томов в наборе теневого копирования.
  3. Вызовите CVssWriter::GetSnapshotDeviceName , чтобы получить имя тома теневого копирования.
Если этот метод вызывает метод CVssWriterEx2::GetSessionId, CVssWriter::SetWriterFailure или CVssWriterEx2::SetWriterFailureEx , он должен делать это в том же потоке, который вызвал этот метод. Дополнительные сведения см. в разделе Обработка событий записи.

Требования

   
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header vswriter.h (включая Vss.h, VsWriter.h)
Библиотека VssApi.lib

См. также раздел

CVssWriter

CVssWriter::GetSnapshotDeviceName

CVssWriter::OnPreRestore

CVssWriter::OnPrepareBackup

CVssWriter::SetWriterFailure

CvssWriter::OnThaw

IVssWriterComponents