IVssBackupComponents::AddAlternativeLocationMapping 方法 (vsbackup.h)

AddAlternativeLocationMapping 方法是由要求者用來指出替代位置對應是用來還原指定元件中檔案集的所有成員。

語法

HRESULT AddAlternativeLocationMapping(
  [in] VSS_ID             writerId,
  [in] VSS_COMPONENT_TYPE componentType,
  [in] LPCWSTR            wszLogicalPath,
  [in] LPCWSTR            wszComponentName,
  [in] LPCWSTR            wszPath,
  [in] LPCWSTR            wszFilespec,
  [in] bool               bRecursive,
  [in] LPCWSTR            wszDestination
);

參數

[in] writerId

匯出元件之寫入器類別的全域唯一標識子) (GUID。

[in] componentType

元件的類型。 此參數的可能值是由 VSS_COMPONENT_TYPE 列舉所定義。

[in] wszLogicalPath

以 Null 結尾的寬字元字串,其中包含元件的邏輯路徑。

如需詳細資訊,請參閱 元件的邏輯路徑

邏輯路徑可以是 NULL

在非 NULL 邏輯路徑中出現的字元沒有任何限制。

[in] wszComponentName

包含元件名稱的 Null 終止寬字元字串。

在非 NULL 邏輯路徑中出現的字元沒有任何限制。

[in] wszPath

Null 終止的寬字元字串,其中包含原本包含要重新放置之檔案之目錄的路徑。 此路徑可以是 VSS 電腦的本機路徑,也可以是遠端檔案檔案伺服器上的檔案共享目錄。

路徑可以包含環境變數 (,例如%SystemRoot%) ,但不能包含通配符。 支援 UNC 路徑。

路徑結尾不需要反斜杠 (“”) 。 這是擷取此資訊以檢查的應用程式。

[in] wszFilespec

包含源檔規格的 Null 終止寬字元字串。

例如,檔案規格不能包含目錄規格 (,沒有反斜杠) 但可以包含 ? 和 * 通配符。

[in] bRecursive

布爾值,指出 wszPath 參數所指定的路徑是否只識別單一目錄,或指出要以遞歸方式周遊的目錄階層。 如果路徑被視為以遞歸方式周遊的目錄階層,則此參數應設定為 true ,否則為 false

如需周遊掛接資料夾的資訊,請參閱 使用掛接的資料夾和重新分析點

[in] wszDestination

以 Null 結尾的寬字元字串,其中包含要重新放置檔案之目錄的名稱。 此路徑可以是 VSS 電腦的本機路徑,也可以是遠端檔案檔案伺服器上的檔案共享目錄。 支援 UNC 路徑。

傳回值

以下是此方法的有效傳回碼。

意義
S_OK
已成功新增替代位置對應。
E_INVALIDARG
其中一個參數值無效。
E_OUTOFMEMORY
呼叫端記憶體不足或其他系統資源。
VSS_E_BAD_STATE
備份元件物件未初始化、此方法已在還原作業期間呼叫,或此方法未在正確的順序內呼叫。
VSS_E_INVALID_XML_DOCUMENT
XML 檔無效。 請檢查事件記錄檔以取得詳細數據。 如需詳細資訊,請參閱 VSS 下的事件和錯誤處理
VSS_E_OBJECT_NOT_FOUND
指定的元件不存在。
VSS_E_UNEXPECTED
非預期的錯誤。 錯誤碼會記錄在錯誤記錄檔中。 如需詳細資訊,請參閱 VSS 下的事件和錯誤處理

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

備註

Windows 7、Windows Server 2008 R2、Windows Vista、Windows Server 2008、Windows XP 和 Windows Server 2003: 在 Windows 8 和 Windows Server 2012 之前,不支援遠端檔案共用。

writerIdcomponentTypewszLogicalPathwszComponentName 參數會識別特定元件,而 wszPathwszFilespecbRecursive 參數會識別屬於該元件的檔案集。

路徑、檔案規格和遞歸旗標的組合, (wszPathwszFilespec、 和 bRecursive 分別) 提供給 AddAlternativeLocationMapping 的對應必須符合使用 IVssCreateWriterMetadata::AddFilesToFileGroupIVssCreateWriterMetadata::AddDatabaseFilesIVssCreateWriterMetadata::AddDatabaseLogFiles 新增至元件之一的檔案集。

因為 AddAlternativeLocationMapping 是用來通知寫入器使用替代位置來還原元件中的所有檔案,所以不應該針對未指定替代位置對應之元件中的任何元件或檔案呼叫它。

wszPath 的值將會在還原時對應至 wszDestination;不過,原始路徑下的檔名和子目錄會保留相同的名稱。

在還原期間 ,AddAlternativeLocationMapping 的一般用法可能如下:

  1. 從備份媒體擷取儲存的寫入器元數據檔,並使用 IVssExtomerMetadata::LoadFromXML 載入該資訊。
  2. 呼叫 IVssExternerMetadata::GetAlternateLocationMapping 以取得具有對應資訊的 IVssWMFiledesc 介面,並使用 IVssWMFiledesc::GetAlternateLocation 取得替代位置。
  3. 檢查文件資訊,以啟發學習方式判斷應該套用此替代位置對應的元件。
  4. 呼叫 IVssBackupComponents::AddAlternativeLocationMapping 來傳達已還原檔案的位置。
如果下列任一項為 true,則檔案應一律還原至其替代位置對應:
  • ) 備份時間設定的還原 (方法VSS_RME_RESTORE_TO_ALTERNATE_LOCATION。
  • 其還原目標是在還原時間設定 (,) 設為 VSS_RT_ALTERNATE。
在任一情況下,如果未定義有效的替代位置對應,這就會構成寫入器錯誤。

如果下列任一項為 true,檔案可能會還原至替代位置對應:

  • 還原方法VSS_RME_RESTORE_IF_NOT_THERE,而且磁碟上已經有檔案的版本。
  • 還原方法VSS_RME_RESTORE_IF_CAN_REPLACE,而且檔案的版本存在於磁碟上,而且無法取代。
同樣地,如果未定義有效的替代位置對應,這會構成寫入器錯誤。

替代位置對應只會在還原作業期間使用,不應與替代路徑混淆,這隻能在備份作業期間使用。

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 vsbackup.h (包括 VsBackup.h、Vss.h、VsWriter.h)
程式庫 VssApi.lib

另請參閱

IVssBackupComponents

IVssWMFiledesc::GetAlternateLocation

VSS_COMPONENT_TYPE