IVssComponent::GetDifferencedFile 方法 (vswriter.h)

GetDifferencedFile 方法會傳回指定檔案集的相關信息, (指定的檔案或檔案) 參與增量或差異備份或還原為差異檔案,也就是說,與檔案相關聯的備份和還原會實作,就像將整個檔案複製到備份媒體 (,而不是使用部分檔案) 。

在備份或還原作業期間,要求者或寫入器可以呼叫這個方法。

語法

HRESULT GetDifferencedFile(
  [in]  UINT     iDifferencedFile,
  [out] BSTR     *pbstrPath,
  [out] BSTR     *pbstrFilespec,
  [out] BOOL     *pbRecursive,
  [out] BSTR     *pbstrLsnString,
  [out] FILETIME *pftLastModifyTime
);

參數

[in] iDifferencedFile

要檢查之差異檔案的索引編號。 此參數的值是介於 0 到 n–1 的整數,其中 n 是與指定元件相關聯的差異檔案總數 (及其子元件,如果它定義元件集) 。 IVssComponent::GetDifferencedFilesCount 會傳回 n 的值。

[out] pbstrPath

呼叫端配置的變數位址,接收包含差異檔案路徑的字串。

此方法的用戶必須檢查此路徑是否以反斜杠結尾 (\) 。

[out] pbstrFilespec

呼叫端配置的變數位址,該變數會接收包含差異檔案之檔案規格的字串。

[out] pbRecursive

呼叫端配置的變數位址,接收布爾值,指定是否應該以遞歸方式解譯差異檔案的檔案規格。 如果 為 TRUE,則必須搜尋符合 檔案規格 pbstrFilespec 的檔案,才能在增量或差異備份期間尋找要當做差異檔案處理的檔案。 如果 為 FALSE,則只需要搜尋根目錄。

[out] pbstrLsnString

保留供未來使用。

[out] pftLastModifyTime

呼叫端配置的變數位址,該變數會接收差異檔案上次修改時間的寫入器規格,以 FILETIME 結構表示。

傳回值

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

意義
S_OK
已成功傳回屬性值。
E_INVALIDARG
其中一個參數值無效。
E_OUTOFMEMORY
呼叫端記憶體不足或其他系統資源。
VSS_E_OBJECT_NOT_FOUND
找不到與所提供索引對應的差異檔案。
VSS_E_INVALID_XML_DOCUMENT
XML 檔無效。 請檢查事件記錄檔以取得詳細數據。 如需詳細資訊,請參閱 VSS 下的事件和錯誤處理

備註

在備份或還原作業期間,要求者或寫入器可以呼叫 GetDifferencedFile

如果呼叫 GetDifferencedFile 成功,呼叫端會藉由呼叫 SysFreeString 函式來釋放 pbstrPathpbstrFilespec 參數中傳回的字元串。

寫入器可以在實際備份檔案之前,隨時指出呼叫 IVssComponent::AddDifferencedFilesByLastModifyTime 的差異檔案, 通常處理 PostSnapshot 事件 (CVssWriter::OnPostSnapshot) 期間,在傳回 IVssBackupComponents::D oSnapshotSet 之前,不會在傳回 IVssBackupComponents::D oSnapshotSet 之前呼叫。

GetDifferencedFile 所傳回的時間戳會套用至符合所傳回路徑的所有檔案, (pbstrPath) 和檔案規格 (pbstrFilespec) 。

如果 GetDifferencedFile 所傳回的時間戳值 (pftLastModifyTime) 為非零值,則要求者必須遵守此值,不論自己的記錄和文件系統資訊為何,並使用它來判斷差異檔案是否應該包含在差異或增量備份中。

如果 GetDifferencedFile 傳回的時間戳為零,要求者可以使用文件系統資訊及其自己的記錄來判斷差異檔案是否應該包含在差異或增量備份中。

差異檔案可以是下列其中一項:

當參考已經屬於元件的檔案集時,路徑、檔案規格和遞歸旗標的組合 (wszPathwszFileSpecbRecursive 分別) 呼叫 GetDifferencedFile 時所使用的檔案集,或如果元件定義元件集,則 (其中一個子元件) 。

GetDifferencedFile 傳回差異的新檔案時,該檔案的路徑 (pbstrPath) 應該符合或位於元件中路徑底下,或者如果元件定義元件集) ,則其子元件 (其中一個。

此外, GetDifferencedFile 傳回的檔案不應該已經由元件或寫入器管理。

如果違反上述任一準則,則它們會在寫入器部分構成錯誤,而且應該回報。

IVssComponent 介面中沒有方法,允許變更或新增 GetDifferencedFilesByLastModifyTime 所傳回之新檔案的替代位置對應。 如果替代位置對應對應至新的檔案,則會使用該替代位置。

規格需求

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

另請參閱

IVssComponent

IVssComponent::AddDifferencedFilesByLastModifyTime

IVssComponent::GetDifferencedFilesCount

增量和差異備份