Metodo IVssComponent::GetDifferencedFile (vswriter.h)

Il metodo GetDifferencedFile restituisce informazioni su un set di file (un file o file specificato) per partecipare a un backup incrementale o differenziale o un ripristino come file diverso, ovvero il backup e i ripristini associati a esso devono essere implementati come se l'intero file venga copiato da e dal supporto di backup (anziché usare file parziali).

Questo metodo può essere chiamato da un richiedente o da un writer durante operazioni di backup o ripristino.

Sintassi

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

Parametri

[in] iDifferencedFile

Numero di indice del file con differenza da esaminare. Il valore di questo parametro è un intero compreso tra 0 e n-1, dove n è il numero totale di file con differenza associati a un componente specificato (e i relativi sottocomponenti se definisce un set di componenti). Il valore di n viene restituito da IVssComponent::GetDifferencedFilesCount.

[out] pbstrPath

Indirizzo di una variabile allocata dal chiamante che riceve una stringa contenente il percorso dei file differenzati.

Gli utenti di questo metodo devono verificare se questo percorso termina con una barra rovesciata (\).

[out] pbstrFilespec

Indirizzo di una variabile allocata dal chiamante che riceve una stringa contenente la specifica del file dei file con differenza.

[out] pbRecursive

Indirizzo di una variabile allocata dal chiamante che riceve un valore booleano che specifica se la specifica del file per i file con differenza deve essere interpretata in modo ricorsivo. Se TRUE, l'intera gerarchia di directory deve essere cercata per i file corrispondenti alla specifica del file pbstrFilespec per trovare i file da gestire come file diversi durante i backup incrementali o differenziali. Se FALSE, è necessario eseguire la ricerca solo nella directory radice.

[out] pbstrLsnString

Riservato per utilizzi futuri.

[out] pftLastModifyTime

Indirizzo di una variabile allocata dal chiamante che riceve la specifica del writer dell'ora dell'ultima modifica per i file di differenza, espressa come struttura FILETIME .

Valore restituito

Di seguito sono riportati i codici restituiti validi per questo metodo.

Valore Significato
S_OK
Restituito correttamente il valore dell'attributo.
E_INVALIDARG
Uno dei valori dei parametri non è valido.
E_OUTOFMEMORY
Il chiamante non è in memoria o altre risorse di sistema.
VSS_E_OBJECT_NOT_FOUND
Non è stato trovato alcun file con differenza corrispondente all'indice fornito.
VSS_E_INVALID_XML_DOCUMENT
Il documento XML non è valido. Controllare il registro eventi per informazioni dettagliate. Per altre informazioni, vedere Gestione degli eventi e degli errori in VSS.

Commenti

GetDifferencedFile può essere chiamato da un richiedente o da un writer durante operazioni di backup o ripristino.

Se la chiamata a GetDifferencedFile ha esito positivo, il chiamante è responsabile della liberazione della stringa restituita nei parametri pbstrPath e pbstrFilespec chiamando la funzione SysFreeString.

Poiché i writer possono indicare file diversi con chiamate a IVssComponent::AddDifferencedFilesByLastModifyTime in qualsiasi momento prima del backup effettivo dei file, in genere durante la gestione di un evento PostSnapshot (CVssWriter::OnPostSnapshot), durante i backup GetDifferencedFile non viene chiamato in modo utile prima del ritorno di IVssBackupComponents::D oSnapshotSet è stato restituito correttamente.

Il timestamp restituito da GetDifferencedFile si applica a tutti i file che corrispondono al percorso restituito (pbstrPath) e alla specifica del file (pbstrFilespec).

Se il valore timestamp restituito da GetDifferencedFile (pftLastModifyTime) è diverso da zero, un richiedente deve rispettare questo valore indipendentemente dai propri record e informazioni sul file system e usarlo per determinare se il file con differenza deve essere incluso in un backup differenziale o incrementale.

Se il timestamp restituito da GetDifferencedFile è zero, il richiedente può usare le informazioni sul file system e i relativi record per determinare se i file con differenza devono essere inclusi in un backup differenziale o incrementale.

I file con differenza possono essere uno dei seguenti:

Quando si fa riferimento a un set di file che fa già parte del componente, la combinazione di percorso, specifica del file e del flag di ricorsione (wszPath, wszFileSpec e bRecursive, rispettivamente) utilizzata durante la chiamata a GetDifferencedFile deve corrispondere a quella di un set di file già nel componente o a uno dei relativi sottocomponenti (se il componente definisce un set di componenti).

Quando GetDifferencedFile restituisce un nuovo file con differenza, il percorso del file (pbstrPath) deve corrispondere o essere sotto un percorso già presente nel componente o uno dei relativi sottocomponenti (se il componente definisce un set di componenti).

Inoltre, i file restituiti da GetDifferencedFile non devono essere già gestiti da componente o writer.

Se uno di questi criteri viene violato, costituisce un errore nella parte del writer e deve essere segnalato.

Non esiste alcun metodo nell'interfaccia IVssComponent che consente di modificare o aggiungere un mapping di percorso alternativo per i nuovi file restituiti da GetDifferencedFilesByLastModifyTime. Se un mapping di percorso alternativo corrisponde al nuovo file, verrà usato tale percorso alternativo.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione vswriter.h (include Vss.h, VsWriter.h)
Libreria VssApi.lib

Vedi anche

IVssComponent

IVssComponent::AddDifferencedFilesByLastModifyTime

IVssComponent::GetDifferencedFilesCount

Backup incrementali e differenziali