公开和显示卷影复制卷

除了通过 IVssBackupComponents 接口通过其副本 的设备对象进行访问外,请求者还可以将卷影副本作为装载的只读设备提供给其他进程。

此过程称为 公开卷影副本,并使用 IVssBackupComponents::ExposeSnapshot 方法执行。

卷影副本可以作为本地卷(分配有驱动器号或与装载的文件夹关联)或作为文件共享公开。

为了说明,请考虑在 F:\ 上装载的系统 exposedSys 上由卷组成的卷影副本其根目录为 dirOne 和 dirTwo,以及文件 FileOne。

在本地公开卷影副本

装载为本地卷时,卷影副本的根目录始终在装载点 (驱动器号或装载的文件夹) 可见,并且所有影子复制的文件都可见。

如果卷影副本是通过装载的文件夹 C:\ShadowOfF 在本地公开的,你会发现磁盘上存在的所有文件都装载在 F:\在 C:\ShadowOfF 下提供卷影副本时。 检查 C:\ShadowOfF 会发现 C:\ShadowOfF 下的两个目录(dirOne 和 dirTwo)以及一个文件 fileOne。

调用本地公开卷影副本可能是:

  IVssBackupComponents *pReq;
  VSS_ID snapID;
  PWSTR wszExposed;
  //    .
  //    .
  hr = pReg->ExposeSnapshot(
         snapID,                           // VSS_ID SnapshotId,
         NULL,                             // VSS_PWSZ wszPathFromRoot
         VSS_VOLSNAP_ATTR_EXPOSED_LOCALLY, // LONG lAttributes
         L"C:\ShadowOfF",                  // VSS_PWSZ wszExpose
         LPWSTR &wszExposed,               // VSS_PWSZ* pwszExposed
       );

如果卷影副本在本地成功公开, wszExposed 应包含宽字符串“C:\ShadowOfF”。

稍后可以通过调用 IVssBackupComponentsEx2::UnexposeSnapshot 来取消显示卷影副本。

只能在本地公开永久性卷影副本(即使用 VSS_CTX_NAS_ROLLBACK 或 VSS_CTX_APP_ROLLBACK 创建的卷影副本)。

将卷影副本公开为远程共享

或者,可以选择创建装载在 F:\ 处的磁盘的卷影副本可用作远程文件共享,并且仅将 dirTwo 下的数据公开为文件共享 dirTwoOfF。

在这种情况下,系统可以通过将 \\exposedSys\dirTwoOfF 映射为网络驱动器来访问 F:\dirTwo 下文件的卷影副本。

对实现远程公开卷影副本作为共享的调用可能如下所示:

  IVssBackupComponents *pReq;
  VSS_ID snapID;
  LPWSTR wszExposed;
  //    .
  //    .
  hr = pReg->ExposeSnapshot(
               snapID,                            // VSS_ID SnapshotId,
               L"\dirTwo",                        // VSS_PWSZ wszPathFromRoot
               VSS_VOLSNAP_ATTR_EXPOSED_REMOTELY, // LONG lAttributes
               L"dirTwoOfF",                      // VSS_PWSZ wszExpose
               LPWSTR &wszExposed,                // VSS_PWSZ* pwszExposed
       );

如果卷影副本已成功远程公开, wszExposed 应包含宽字符串“dirTwoOfF”。

当前映射 dirTwoOfF 网络共享的任何系统都可以与它断开连接,就像它可能从任何普通共享断开连接一样。

显示卷影副本

表面阴影副本是系统装载管理器命名空间已知的卷影副本。

这意味着,你可以像查找任何其他可用但尚未装载的卷一样查找此类卷影副本,例如,使用 FindFirstVolumeFindNextVolume

显然,公开的卷影副本也是表面阴影副本。 但是,情况不一定正确。

如果已卸载本地公开的卷影副本,或者系统选择断开远程公开的卷影副本的连接,则不再公开该卷影副本。 但是,只要卷影副本保留,卷就会浮出水面。 这意味着可以像任何其他只读卷一样装载它们。