CVssWriter::OnPostSnapshot 方法 (vswriter.h)

OnPostSnapshot 方法由编写器在 PostSnapshot 事件后调用。

OnPostSnapshot 是一种虚拟方法。 它由 CVssWriter 基类实现,但可由派生类重写。

语法

bool OnPostSnapshot(
  [in] IVssWriterComponents *pComponent
);

参数

[in] pComponent

指向 VSS 传入的 IVssWriterComponents 对象的指针,为方法提供对编写器组件信息的访问权限。 如果 CVssWriter::AreComponentsSelected 返回 false) ,则如果请求者不支持组件 (,则此参数的值可能为 NULL。

返回值

由基类实现的 OnPostSnapshot 始终返回 true

此方法的任何其他实现都必须返回 true ,出现严重错误时除外。 如果发生严重错误,该方法必须调用 CVssWriter::SetWriterFailure 方法,以在返回 false 之前提供失败说明。 如果发生非严重错误,该方法仍应调用 SetWriterFailure ,但返回 true。 如果错误是由暂时性问题引起的,该方法应在 对 SetWriterFailure 的调用中指定VSS_E_WRITERERROR_RETRYABLE。

在发生故障的所有情况下, 方法都应将事件写入事件日志,以报告失败的确切原因。

注解

CVssWriter 基类对此方法的默认实现返回 true,而不执行任何其他操作。

CVssWriter::OnPostSnapshot 通常用于处理编写器对备份组件元数据的任何最终更新,并清理 (,例如) 删除临时文件。

如果正在执行增量备份或差异备份,编写器可能会调用 IVssComponent::GetPreviousBackupStampIVssComponent::SetBackupStamp。 有关详细信息,请参阅 备份复杂存储中的编写器角色。 此时可调用的另一种方法是 IVssComponent::AddDifferencedFilesByLastModifyTime

将编写器返回到正常操作 (反向 CVssWriter::OnPrepareSnapshotCVssWriter::OnFreeze) 的操作所需的大部分工作通常在 CVssWriter::OnThaw 中执行,而不是在 OnPostSnapshot 中执行。

编写器绝不应从此方法或任何其他 CVssWriter (Ex) ::OnXxx 回调方法引发异常。

如果卷影副本在上下文中设置了 VSS_VOLSNAP_ATTR_AUTORECOVER 标志,则编写器应执行所需的任何恢复 (例如,回滚任何未完成的事务) 以便组件可用于数据挖掘 (的只读副本,而无需将负载添加到实时服务器) 或还原目的 (例如, 从数据库) 还原选定项。

若要检索卷影副本的卷名,请执行以下步骤:

  1. 调用 CVssWriter::GetCurrentVolumeCount 方法以查询卷影副本集中的卷数。
  2. 调用 CVssWriter::GetCurrentVolumeArray 方法以枚举卷影副本集中卷的原始名称。
  3. 调用 CVssWriter::GetSnapshotDeviceName 以检索卷影副本卷的名称。
如果此方法调用 CVssWriterEx2::GetSessionIdCVssWriter::SetWriterFailureCVssWriterEx2::SetWriterFailureEx 方法,则必须在调用此方法的同一线程中执行此操作。 有关详细信息,请参阅 编写器事件处理

要求

   
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 vswriter.h (包括 Vss.h、VsWriter.h)
Library VssApi.lib

另请参阅

CVssWriter

CVssWriter::GetSnapshotDeviceName

CVssWriter::OnPreRestore

CVssWriter::OnPrepareBackup

CVssWriter::SetWriterFailure

CvssWriter::OnThaw

IVssWriterComponents