Méthode IVssComponent ::GetDifferencedFile (vswriter.h)

La méthode GetDifferencedFile retourne des informations sur un jeu de fichiers (un ou plusieurs fichiers spécifiés) à participer à une sauvegarde ou à une restauration incrémentielle ou différentielle en tant que fichier différent, c’est-à-dire que la sauvegarde et les restaurations qui lui sont associées doivent être implémentées comme si des fichiers entiers étaient copiés vers et à partir d’un support de sauvegarde (au lieu d’utiliser des fichiers partiels).

Cette méthode peut être appelée par un demandeur ou un writer pendant les opérations de sauvegarde ou de restauration.

Syntaxe

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

Paramètres

[in] iDifferencedFile

Numéro d’index du fichier différent à examiner. La valeur de ce paramètre est un entier compris entre 0 et n–1 inclus, où n est le nombre total de fichiers différents associés à un composant donné (et ses sous-composants s’il définit un jeu de composants). La valeur n est retournée par IVssComponent ::GetDifferencedFilesCount.

[out] pbstrPath

Adresse d’une variable allouée par l’appelant qui reçoit une chaîne contenant le chemin des fichiers différentiels.

Les utilisateurs de cette méthode doivent case activée pour déterminer si ce chemin se termine par une barre oblique inverse (\).

[out] pbstrFilespec

Adresse d’une variable allouée par l’appelant qui reçoit une chaîne contenant la spécification de fichier des fichiers différentiels.

[out] pbRecursive

Adresse d’une variable allouée à l’appelant qui reçoit une valeur booléenne spécifiant si la spécification de fichier pour les fichiers différentiels doit être interprétée de manière récursive. Si la valeur est TRUE, l’ensemble de la hiérarchie de répertoires doit être recherché pour rechercher les fichiers correspondant à la spécification de fichier pbstrFilespec pour rechercher les fichiers à gérer en tant que fichiers différents lors des sauvegardes incrémentielles ou différentielles. Si la valeur est FALSE, seul le répertoire racine doit faire l’objet d’une recherche.

[out] pbstrLsnString

Réservé pour un usage futur.

[out] pftLastModifyTime

Adresse d’une variable allouée par l’appelant qui reçoit la spécification writer de l’heure de la dernière modification pour les fichiers de différence, exprimée sous la forme d’une structure FILETIME .

Valeur retournée

Voici les codes de retour valides pour cette méthode.

Valeur Signification
S_OK
La valeur de l’attribut a été retournée.
E_INVALIDARG
L’une des valeurs de paramètre n’est pas valide.
E_OUTOFMEMORY
L’appelant n’a plus de mémoire ou d’autres ressources système.
VSS_E_OBJECT_NOT_FOUND
Aucun fichier différent correspondant à l’index fourni n’a été trouvé.
VSS_E_INVALID_XML_DOCUMENT
Le document XML n’est pas valide. Pour plus d’informations, consultez le journal des événements. Pour plus d’informations, consultez Gestion des événements et des erreurs sous VSS.

Remarques

GetDifferencedFile peut être appelé par un demandeur ou un writer pendant les opérations de sauvegarde ou de restauration.

Si l’appel à GetDifferencedFile réussit, l’appelant est chargé de libérer la chaîne retournée dans les paramètres pbstrPath et pbstrFilespec en appelant la fonction SysFreeString .

Comme les auteurs peuvent indiquer des fichiers différents avec des appels à IVssComponent ::AddDifferencedFilesByLastModifyTime à tout moment avant la sauvegarde réelle des fichiers, Généralement, lors de la gestion d’un événement PostSnapshot (CVssWriter ::OnPostSnapshot), pendant les sauvegardes , GetDifferencedFile n’est pas utilement appelé avant le retour de IVssBackupComponents ::D oSnapshotSet a été correctement retourné.

L’horodatage retourné par GetDifferencedFile s’applique à tous les fichiers qui correspondent au chemin d’accès retourné (pbstrPath) et à la spécification de fichier (pbstrFilespec).

Si la valeur d’horodatage retournée par GetDifferencedFile (pftLastModifyTime) est différente de zéro, un demandeur doit respecter cette valeur indépendamment de ses propres enregistrements et informations de système de fichiers et l’utiliser pour déterminer si le fichier différent doit être inclus dans une sauvegarde différentielle ou incrémentielle.

Si l’horodatage retourné par GetDifferencedFile est égal à zéro, le demandeur peut utiliser les informations du système de fichiers et ses propres enregistrements pour déterminer si les fichiers différents doivent être inclus dans une sauvegarde différentielle ou incrémentielle.

Les fichiers différentiels peuvent être l’un des éléments suivants :

Lorsque vous faites référence à un jeu de fichiers qui fait déjà partie du composant, la combinaison de chemin d’accès, de spécification de fichier et d’indicateur de récursivité (wszPath, wszFileSpec et bRecursive, respectivement) utilisée lors de l’appel de GetDifferencedFile doit correspondre à celle d’un jeu de fichiers déjà dans le composant, ou de l’un de ses sous-composants (si le composant définit un jeu de composants).

Lorsque GetDifferencedFile retourne un nouveau fichier différent, le chemin d’accès de ce fichier (pbstrPath) doit correspondre ou se trouver en dessous d’un chemin déjà dans le composant, ou de l’un de ses sous-composants (si le composant définit un jeu de composants).

En outre, les fichiers retournés par GetDifferencedFile ne doivent pas déjà être gérés par le composant ou l’enregistreur.

Si l’un de ces critères est violé, ils constituent une erreur de la part de l’auteur et doivent être signalés.

Il n’existe aucune méthode dans l’interface IVssComponent permettant de modifier ou d’ajouter un autre mappage d’emplacement pour les nouveaux fichiers retournés par GetDifferencedFilesByLastModifyTime. Si un autre mappage d’emplacement correspond au nouveau fichier, cet autre emplacement est utilisé.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête vswriter.h (inclure Vss.h, VsWriter.h)
Bibliothèque VssApi.lib

Voir aussi

IVssComponent

IVssComponent ::AddDifferencedFilesByLastModifyTime

IVssComponent ::GetDifferencedFilesCount

Sauvegardes incrémentielles et différentielles