正在停止请求者还原的服务

可能需要先停止服务,再执行还原操作后重启服务。

通常,在使用 CVssWriter::OnPreRestore (处理 PreRestore 事件时,编写器将执行停止和启动支持还原的服务,并使用 CVssWriter::OnPostRestore) (PostRe) store 事件。

但是,在某些情况下,请求者可能需要显式停止正在运行的服务。 编写器通过将 VSS_RESTOREMETHOD_ENUM枚举的 VSS_RME_STOP_RESTORE_START或VSS_RME_RESTORE_STOP_START值设置为调用 IVssCreateWriterMetadata::SetRestoreMethod 方法的还原方法参数,并指定要停止的服务的名称来指示是否是这种情况。

请求者使用 IVssExamineWriterMetadata::GetRestoreMethod 方法获取有关还原方法和要停止的服务的名称的信息。

编写器在指定要停止的服务的名称时,务必使用该服务的正确公开名称。 名称不明确或不准确可能会导致请求者停止错误的服务或无法确定要停止的服务。

完成还原操作后,请求者必须重启服务。

在设计和实现支持请求者必须停止和重启的服务的编写器时必须小心。 具体而言,此类编写器实际上不应是服务的一部分,也就是说,编写器本身不需要在还原操作过程中停止再重新启动。

进程停止的编写器在重启时将具有不同的编写器实例。 编写器的新实例不会接收适用于编写器的原始实例的 VSS 事件。 具体而言,如果在处理 PreRestore 事件后停止编写器实例的进程,则新实例将不会收到 PostRestore 事件。 此外,VSS 将生成一个错误,指示还原操作中参与的编写器丢失, IVssBackupComponents::P ostRestore 可能会返回失败。