卷影复制提供程序中的错误处理

VSS 允许同时存在许多卷影副本,但它只允许在调用 IVssBackupComponents::StartSnapshotSet 和从调用 IVssBackupComponents::D oSnapshotSet 之间创建一个卷影副本集。

无部分提交

如果任何提供程序在卷影复制集中的任何卷或 LUN 上失败,则整个卷影复制集的创建会失败。 这是设计的结果。 此设计简化了与部分故障语义相关的行为问题,并跨集中的所有卷影副本维护一致的时间点。

报告故障条件

如果提供程序错误或错误条件发生,提供程序必须将错误记录到应用程序事件日志。 这包括创建或导入卷影复制集时的任何特定于提供程序的错误,或者创建后复制卷影副本的资源分配失败。 此日志记录在卷影复制集中卷处于冻结状态时不得发生。

有效的提供程序返回值

下表列出了提供程序方法及其含义的有效返回代码。

说明
S_OK
该方法成功。
E_OUTOFMEMORY
提供程序内存不足或其他系统资源。
E_INVALIDARG
其中一个参数值无效。
E_ACCESSDENIED
非特权客户端尝试调用提供程序。
VSS_E_BAD_STATE
没有提供程序支持所请求的操作,或者无法对对象执行该操作,因为对象未处于正确状态。
VSS_E_OBJECT_NOT_FOUND
参数是指找不到 (的对象,例如卷影复制 ID、卷影复制集 ID 或 volume.)
VSS_E_INSUFFICIENT_STORAGE
提供程序无法执行该操作,因为没有足够的磁盘空间。
VSS_E_VOLUME_NOT_SUPPORTED
此计算机上的提供程序不支持卷上请求的操作。
VSS_E_VOLUME_NOT_SUPPORTED_BY_PROVIDER
提供程序不支持卷。
VSS_E_MAXIMUM_NUMBER_OF_SNAPSHOTS_REACHED
提供程序已达到可以支持的最大卷影副本数。
VSS_E_PROVIDER_VETO
提供程序遇到内部运行时错误,该错误不映射到另一个返回值。 提供程序还必须将事件写入应用程序事件日志,为用户提供有关如何解决此问题的信息。
VSS_E_CANNOT_REVERT_DISKID
无法将一个或多个磁盘的 MBR 签名或 GPT ID 设置为请求的值。 有关详细信息,请查看应用程序事件日志。

 

提供程序不应尝试返回任何其他错误代码。

如果提供程序返回的错误代码不是预期 (,例如 S_FALSEE_FAILE_UNEXPECTEDE_ABORT) ,VSS 会将事件写入事件日志中提及提供程序和失败的方法,并将错误转换为 VSS_E_UNEXPECTED_PROVIDER_ERROR ,然后再返回到请求者。 对于 来自 IVssProviderCreateSnapshotSet::AbortSnapshotsIVssProviderNotifications::OnUnload 的任何返回,则不会执行此操作。