Partager via


Méthode IVssBackupComponents ::AddAlternativeLocationMapping (vsbackup.h)

La méthode AddAlternativeLocationMapping est utilisée par un demandeur pour indiquer qu’un autre mappage d’emplacement a été utilisé pour restaurer tous les membres d’un jeu de fichiers dans un composant donné.

Syntaxe

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
);

Paramètres

[in] writerId

Identificateur global unique (GUID) de la classe writer qui a exporté le composant.

[in] componentType

Type du composant. Les valeurs possibles de ce paramètre sont définies par l’énumération VSS_COMPONENT_TYPE .

[in] wszLogicalPath

Chaîne de caractères larges terminée par null contenant le chemin logique du composant.

Pour plus d’informations, consultez Chemin d’accès logique des composants.

Le chemin logique peut être NULL.

Il n’existe aucune restriction sur les caractères qui peuvent apparaître dans un chemin logique non NULL .

[in] wszComponentName

Chaîne de caractères larges terminée par null contenant le nom du composant.

Il n’existe aucune restriction sur les caractères qui peuvent apparaître dans un chemin logique non NULL .

[in] wszPath

Chaîne de caractères larges terminée par null contenant le chemin d’accès au répertoire qui contenait à l’origine le fichier à déplacer. Ce chemin peut être local sur l’ordinateur VSS, ou il peut s’agir d’un répertoire de partage de fichiers sur un serveur de fichiers distant.

Le chemin d’accès peut contenir des variables d’environnement (par exemple, %SystemRoot%), mais ne peut pas contenir de caractères génériques. Les chemins UNC sont pris en charge.

Il n’est pas nécessaire que le chemin se termine par une barre oblique inverse («  »). Il appartient aux applications qui récupèrent ces informations de case activée.

[in] wszFilespec

Chaîne de caractères larges terminée par null contenant la spécification du fichier d’origine.

Une spécification de fichier ne peut pas contenir de spécifications de répertoire (par exemple, aucune barre oblique inverse), mais peut contenir le ? et * caractères génériques.

[in] bRecursive

Valeur booléenne qui indique si le chemin d’accès spécifié par le paramètre wszPath n’identifie qu’un seul répertoire ou s’il indique une hiérarchie de répertoires à parcourir de manière récursive. Ce paramètre doit être défini sur true si le chemin est traité comme une hiérarchie de répertoires à parcourir de manière récursive, ou false si ce n’est pas le cas.

Pour plus d’informations sur la traversée des dossiers montés, consultez Utilisation des dossiers montés et points d’analyse.

[in] wszDestination

Chaîne de caractères larges terminée par null contenant le nom du répertoire dans lequel le fichier sera déplacé. Ce chemin peut être local sur l’ordinateur VSS, ou il peut s’agir d’un répertoire de partage de fichiers sur un serveur de fichiers distant. Les chemins UNC sont pris en charge.

Valeur retournée

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

Valeur Signification
S_OK
Ajout du mappage d’emplacement de substitution.
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_BAD_STATE
L’objet de composants de sauvegarde n’est pas initialisé, cette méthode a été appelée pendant une opération de restauration ou cette méthode n’a pas été appelée dans la séquence correcte.
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.
VSS_E_OBJECT_NOT_FOUND
Le composant spécifié n’existe pas.
VSS_E_UNEXPECTED
Erreur inattendue. Le code d’erreur est enregistré dans le fichier journal des erreurs. Pour plus d’informations, consultez Gestion des événements et des erreurs sous VSS.

Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP : Cette valeur n’est pas prise en charge tant que Windows Server 2008 R2 et Windows 7. E_UNEXPECTED est utilisé à la place.

Remarques

Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2008, Windows XP et Windows Server 2003 : Les partages de fichiers distants ne sont pas pris en charge tant qu’Windows 8 et Windows Server 2012.

Les paramètres writerId, componentType, wszLogicalPath et wszComponentName identifient un composant particulier, et les paramètres wszPath, wszFilespec et bRecursive identifient le jeu de fichiers appartenant à ce composant.

Combinaison de chemin d’accès, spécification de fichier, et l’indicateur de récursivité (wszPath, wszFilespec et bRecursive, respectivement) fourni à AddAlternativeLocationMapping à mapper doit correspondre à celui de l’un des jeux de fichiers ajoutés à un composant à l’aide de IVssCreateWriterMetadata ::AddFilesToFileGroup, IVssCreateWriterMetadata ::AddDatabaseFiles ou IVssCreateWriterMetadata ::AddDatabaseLogFiles.

Étant donné que AddAlternativeLocationMapping est utilisé pour informer un enregistreur qu’un autre emplacement a été utilisé pour restaurer tous les fichiers d’un composant, il ne doit pas être appelé pour les composants ou les fichiers d’un composant qui n’ont pas de mappage d’emplacement différent spécifié.

La valeur de wszPath aura été mappée à wszDestination lors de la restauration ; Toutefois, les noms de fichiers et les sous-répertoires sous le chemin d’accès d’origine conservent leurs mêmes noms.

Une utilisation classique de AddAlternativeLocationMapping pendant la restauration peut être la suivante :

  1. Récupérez les documents de métadonnées writer stockés à partir du support de sauvegarde et chargez ces informations avec IVssExamineWriterMetadata ::LoadFromXML.
  2. Appelez IVssExamineWriterMetadata ::GetAlternateLocationMapping pour obtenir une interface IVssWMFiledesc avec les informations de mappage et utilisez IVssWMFiledesc ::GetAlternateLocation pour obtenir l’autre emplacement.
  3. Examinez les informations filedesc pour déterminer de manière heuristique le composant auquel ce mappage d’emplacement alternatif doit être appliqué.
  4. Appelez IVssBackupComponents ::AddAlternativeLocationMapping pour communiquer où les fichiers ont été restaurés.
Un fichier doit toujours être restauré dans son autre mappage d’emplacement si l’une des conditions suivantes est vraie :
  • La méthode de restauration (définie au moment de la sauvegarde) est VSS_RME_RESTORE_TO_ALTERNATE_LOCATION.
  • Sa cible de restauration a été définie (au moment de la restauration) sur VSS_RT_ALTERNATE.
Dans les deux cas, si aucun autre mappage d’emplacement valide n’est défini, cela constitue une erreur d’enregistreur.

Un fichier peut être restauré dans un autre mappage d’emplacement si l’une des conditions suivantes est remplie :

  • La méthode de restauration est VSS_RME_RESTORE_IF_NOT_THERE et une version du fichier est déjà présente sur le disque.
  • La méthode de restauration est VSS_RME_RESTORE_IF_CAN_REPLACE et une version du fichier est présente sur le disque et ne peut pas être remplacée.
Là encore, si aucun mappage d’emplacement alternatif valide n’est défini, cela constitue une erreur de writer.

Un autre mappage d’emplacement est utilisé uniquement pendant une opération de restauration et ne doit pas être confondu avec un autre chemin, qui est utilisé uniquement pendant une opération de sauvegarde.

Configuration requise

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

Voir aussi

IVssBackupComponents

IVssWMFiledesc ::GetAlternateLocation

VSS_COMPONENT_TYPE