CVssWriterEx::InitializeEx 方法 (vswriter.h)

初始化 CVssWriterEx 对象并允许编写器应用程序与 VSS 交互。 与 Initialize 方法不同, InitializeEx 方法允许调用方指定编写器版本信息。

InitializeEx 是由 CVssWriterEx 基类实现的公共方法。

编写器必须调用 InitializeInitializeEx,但不能同时调用两者。

语法

HRESULT InitializeEx(
  [in] VSS_ID                     WriterId,
  [in] LPCWSTR                    wszWriterName,
  [in] DWORD                      dwMajorVersion,
  [in] DWORD                      dwMinorVersion,
  [in] VSS_USAGE_TYPE             ut,
  [in] VSS_SOURCE_TYPE            st,
  [in] VSS_APPLICATION_LEVEL      nLevel,
  [in] DWORD                      dwTimeoutFreeze,
  [in] VSS_ALTERNATE_WRITER_STATE aws,
  [in] bool                       bIOThrottlingOnly,
  [in] LPCWSTR                    wszWriterInstanceName
);

参数

[in] WriterId

编写器类的全局唯一标识符 (GUID) 。

[in] wszWriterName

包含编写器名称的 以 null 结尾的宽字符串。 此字符串未本地化。

[in] dwMajorVersion

编写器应用程序的主要版本。 有关详细信息,请参见“备注”部分。

[in] dwMinorVersion

编写器应用程序的次要版本。 有关详细信息,请参见“备注”部分。

[in] ut

一个VSS_USAGE_TYPE枚举值,该值指示如何在主机系统上使用由编写器管理的数据。

[in] st

一个VSS_SOURCE_TYPE枚举值,该值指示由编写器管理的数据类型。

[in] nLevel

一个VSS_APPLICATION_LEVEL枚举值,该值指示编写器接收冻结事件通知的应用程序级别。

此参数的默认值为 VSS_APP_FRONT_END。

[in] dwTimeoutFreeze

编写器收到 冻结 事件通知与从 VSS 接收匹配的 Thaw 事件通知之间的允许的最大时间(以毫秒为单位)。 超时过期后,将自动调用编写器的 OnAbort 方法。

此参数的默认值为 60000。

[in] aws

一个VSS_ALTERNATE_WRITER_STATE枚举值,该值指示编写器是否具有关联的备用编写器。

此参数的默认值为 VSS_AWS_NO_ALTERNATE_WRITER。 调用方不应重写此默认值。 此参数留待将来使用。

[in] bIOThrottlingOnly

如果启用了 I/O 限制方法,请将此参数设置为 true ,否则请将此参数设置为 false

此参数的默认值为 false。 调用方不应重写此默认值。 此参数留待将来使用。

[in] wszWriterInstanceName

包含编写器实例名称的 以 null 结尾的宽字符串。

此参数的默认值为 NULL。 如果编写器有多个实例并且需要还原事件,则此参数是必需的,不能为 NULL。 有关更多信息,请参见下面的“备注”部分。

返回值

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

含义
S_OK
编写器对象已成功初始化。
S_FALSE
无法初始化编写器对象;VSS 编写器基础结构处于非活动状态,因为 Windows 处于安全模式或正在设置中。
E_ACCESSDENIED
调用方不是管理员。
E_INVALIDARG
其中一个参数值无效。
E_OUTOFMEMORY
调用方内存不足或其他系统资源。
VSS_E_UNEXPECTED
意外错误。 错误代码记录在错误日志文件中。 有关详细信息,请参阅 VSS 下的事件和错误处理

Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 在 Windows Server 2008 R2 和 Windows 7 之前,不支持此值。 改用E_UNEXPECTED。

注解

InitializeEx 方法与 Initialize 方法相同,但 dwMajorVersiondwMinorVersion 参数除外。 如果编写器使用 Initialize 而不是 InitializeEx,则编写器版本将由 IVssExamineWriterMetadataEx2::GetVersion 方法报告为 0.0 (主版本 = 0,次要版本) = 0。

dwMajorVersiondwMinorVersion 参数用于根据以下 VSS 约定指定编写器主版本号和次要版本号:

  • 如果编写器自 Windows XP 以来已更改或是 Windows Vista 的新增功能,则应为其版本号指定 1.0 或更高版本。
  • 每当编写器的已发布版本包含影响编写器与请求者的交互的次要更改时,编写器的次要版本号应递增 1。 例如,对编写器 QFE 或 Service Pack 中的文件规范的更正将证明递增次要版本号是正当的。 但是,在编写器的 beta 版本或候选发布版本之间更改并不能证明更改次要版本号是正当的。
  • 每当编写器的已发布版本包含重大更改时,编写器的主版本号应递增 1。 例如,如果无法使用编写器的早期版本还原使用新版本编写器备份的数据,则应递增新编写器的主版本号。
  • 每当主版本号递增时,次要版本号应重置为零。
如果编写器未指定版本号,VSS 将分配默认版本号 0.0。

VSS 将唯一的编写器实例 ID 分配给编写器应用程序的每个实例。 如果系统上同时存在多个实例 (例如,如果多个 SQL 服务器在一个系统) 上运行,则每个编写器由其编写器类 ID 和编写器实例 ID 的组合唯一标识。

wszWriterInstanceName 参数允许多实例编写器将每个编写器实例的持久名称指定为可读字符串。 此名称在系统上编写器的所有实例中必须是唯一的。 如果编写器具有多个实例并且需要还原事件,则必须为此参数指定非 NULL 字符串。 VSS 使用实例名称来正确还原多实例编写器。

要求

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

另请参阅

CVssWriterEx

IVssExamineWriterMetadataEx2::GetVersion