IVssBackupComponentsEx3::GetWriterStatusEx 方法 (vsbackup.h)

返回指定编写器的扩展状态信息。

语法

HRESULT GetWriterStatusEx(
  [in]            UINT             iWriter,
  [out]           VSS_ID           *pidInstance,
  [out]           VSS_ID           *pidWriter,
  [out]           BSTR             *pbstrWriter,
  [out]           VSS_WRITER_STATE *pnStatus,
  [out]           HRESULT          *phrFailureWriter,
  [out, optional] HRESULT          *phrApplication,
  [out, optional] BSTR             *pbstrApplicationMessage
);

参数

[in] iWriter

要检索其元数据的编写器的索引。 此参数的值是一个介于 0 到 n–1(含 0 到 n-1)的整数,其中 n 是当前系统上写入器的总数。 n 的值由 IVssBackupComponents::GetWriterStatusCount 方法返回。

[out] pidInstance

调用方分配的变量的地址,该变量接收编写器的实例标识符。 此参数是必需的,不能为 NULL

[out] pidWriter

调用方分配的变量的地址,该变量接收编写器类的标识符。 此参数是必需的,不能为 NULL

[out] pbstrWriter

调用方分配的变量的地址,该变量接收包含指定编写器的名称的字符串。 此参数是必需的,不能为 NULL

[out] pnStatus

调用方分配的变量的地址,该变量接收 VSS_WRITER_STATE 枚举值。 此参数是必需的,不能为 NULL

[out] phrFailureWriter

调用方分配的变量的地址,该变量接收编写器为 CVssWriterEx2::SetWriterFailureEx 方法的 hrWriter 参数返回的 HRESULT 失败代码。

以下是支持的值。

含义
S_OK
编写器成功。
VSS_E_WRITERERROR_INCONSISTENTSNAPSHOT
卷影副本仅包含编写器正确备份应用程序组件所需的卷子集。
VSS_E_WRITERERROR_OUTOFRESOURCES
编写器耗尽了内存或其他系统资源。 处理此错误代码的建议方法是等待十分钟,然后重复该操作,最多三次。
VSS_E_WRITERERROR_TIMEOUT
由于冻结和解冻事件之间超时,编写器操作失败。 处理此错误代码的建议方法是等待十分钟,然后重复该操作,最多三次。
VSS_E_WRITERERROR_RETRYABLE
编写器失败,因为如果重新启动整个备份、还原或卷影副本创建过程,则可能不会发生错误。 处理此错误代码的建议方法是等待十分钟,然后重复该操作,最多三次。
VSS_E_WRITERERROR_NONRETRYABLE
编写器操作失败,因为如果创建了另一个卷影副本,可能会重复出现错误。 有关详细信息,请参阅 VSS 下的事件和错误处理
VSS_E_WRITER_NOT_RESPONDING
编写器没有响应。
VSS_E_WRITER_STATUS_NOT_AVAILABLE
编写器状态不适用于一个或多个编写器。 编写器可能已达到可用备份和还原会话的最大数目。
VSS_E_WRITERERROR_PARTIAL_FAILURE
编写器报告一个或多个组件级错误。 若要检索错误,请求者必须使用 IVssComponentEx2::GetFailure 方法。

[out, optional] phrApplication

调用方分配的变量的地址,该变量接收编写器为 CVssWriterEx2::SetWriterFailureEx 方法的 hrApplication 参数传递的返回代码。 此参数是可选的,可以为 NULL

[out, optional] pbstrApplicationMessage

接收编写器为 SetWriterFailureEx 方法的 wszApplicationMessage 参数传递的应用程序失败消息的变量的地址。 此参数是可选的,可以为 NULL

返回值

下面是此方法的有效返回代码。

含义
S_OK
0x00000000L
已成功返回指定编写器的状态。 请注意,必须检查 phrFailureWriter 参数的值,以验证编写器是否成功。 编写器失败代码可以包含在 VsWriter.h 和 编写器错误和否决中列出的代码中。
E_INVALIDARG
0x80070057L
pnStatuspidWriterpbstrWriterpidInstance 参数为 NULL
E_OUTOFMEMORY
0x8007000EL
调用方内存或其他系统资源不足。
VSS_E_BAD_STATE
0x80042301L
备份组件对象未初始化,在还原操作期间调用了此方法,或者未按正确的顺序调用此方法。
VSS_E_OBJECT_NOT_FOUND
0x80042308L
iWriter 参数指定不存在的编写器。

注解

请求者必须调用异步操作 IVssBackupComponents::GatherWriterStatus ,并在调用 IVssBackupComponentsEx3::GetWriterStatusEx 之前等待该操作完成。

如果此方法返回VSS_E_WRITERERROR_PARTIAL_FAILURE,则请求者应使用 IVssComponentEx2::GetFailure 方法检索组件级错误。

调用方完成访问此方法返回的状态信息后,应调用 SysFreeString 以释放 pbstrWriterpbstrApplicationMessage 参数保留的内存。

要求

要求
最低受支持的客户端 Windows 7 [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 R2 [仅限桌面应用]
目标平台 Windows
标头 vsbackup.h (包括 VsBackup.h、Vss.h、VsWriter.h)

另请参阅

CVssWriterEx2::SetWriterFailureEx

IVssBackupComponents::GetWriterStatus

IVssBackupComponentsEx3