Partager via


Utilisation de cibles dirigées

Le mécanisme cible dirigé permet aux enregistreurs de remapper les fichiers au moment de la restauration. Cela permet aux rédacteurs d’effectuer les opérations suivantes :

  • Spécifiez de nouveaux emplacements cibles (analogues à IVssBackupComponents::AddNewTarget d’un demandeur).
  • Récupérez de l’espace disque en restaurant uniquement les parties nécessaires d’un fichier sur le disque, en particulier lorsqu’un fichier a été sauvegardé à l’aide du mécanisme de fichier partiel .
  • Modifiez le format de fichier pour répondre aux besoins actuels.

Tout fichier à utiliser avec une opération cible dirigée doit avoir une cible de restauration de VSS_RT_DIRECTED.

Une fois qu’il a été établi qu’un demandeur peut prendre en charge une opération cible dirigée, un enregistreur (tout en gérant l’événement PreRestore) utilise IVssComponent::AddDirectedTarget pour le instance d’IVssComponent correspondant au composant qui gère le fichier (ou au composant qui définit le jeu de composants qui contient le fichier) pour définir la façon dont le fichier doit être remappé lors de la restauration.

En utilisant IVssComponent::AddDirectedTarget, les enregistreurs spécifient le nom et le chemin d’accès utilisés pour sauvegarder le fichier, le nom de fichier et le chemin d’accès de sa destination de restauration (ces valeurs peuvent être identiques au nom et au chemin d’accès du fichier d’origine), ainsi que les plages de fichiers source et de destination.

Comme pour les opérations de fichiers partiels, les listes de plages sont des paires de décalages dans le fichier à sauvegarder (en octets) et la longueur de la section à restaurer (en octets), le décalage et la longueur étant séparés par un signe deux-points, et chaque paire séparée par une virgule : Offset1*:Length1,** Offset2**:**Length2. Chaque valeur est un entier 64 bits au format hexadécimal ou décimal.

Si un writer doit utiliser le mécanisme cible dirigé pour que le demandeur restaure un fichier à un nouvel emplacement, il aurait appelé IVssComponent::AddDirectedTarget avec le nom de fichier d’origine et le chemin d’accès, ainsi que le nouveau nom de fichier et le nouveau chemin d’accès, et spécifier les plages de destination source avec un décalage zéro et une longueur égale à celle de la taille totale du fichier.

Par instance, si un writer doit avoir un fichier de 200 Ko, C:\WriterData\Index.dat, restauré au format C:\WriterData\OldIndex.dat, la chaîne de plage source et de destination est « 0:204880 ».

Pour remapper un fichier volumineux partiellement sauvegardé, le demandeur utilise la plage source utilisée pour sauvegarder le fichier et une plage de destination qui réduira la taille du fichier. Les informations de plage source peuvent être obtenues à l’aide de IVssComponent::GetPartialFile pour le instance d’IVssComponent correspondant au composant qui gère le fichier (ou au composant qui définit le jeu de composants qui contient le fichier).

Si le fichier partiellement sauvegardé était initialement un fichier volumineux dont l’en-tête, octets de 64 à 512, contient un nombre d’enregistrements et d’autres informations fréquemment mises à jour, et dont les données les plus récentes se trouvent dans les derniers 65536 octets du fichier (octets 0x1239E8577A à 0x1239E7577A), un writer peut spécifier une liste de plages sources en tant que chaîne « 64:448,0x1239E8577A:65536 ».

Si l’enregistreur voulait remapper le fichier restauré pour qu’il contienne uniquement l’en-tête et les données les plus récentes, la liste de plages peut être la chaîne « 0:488,488:65536 ».

Avant d’effectuer réellement une opération de restauration, un demandeur doit case activée pour voir si des fichiers nécessitent une prise en charge cible dirigée.

Pour ce faire, le demandeur effectue d’abord une itération sur les enregistreurs avec des composants stockés dans son document composants de sauvegarde à l’aide de IVssBackupComponents::GetWriterComponentsCount et IVssBackupComponents::GetWriterComponents.

L’interface IVssBackupComponents::GetWriterComponents est ensuite utilisée pour renvoyer des instances de l’interface IVssWriterComponentsExt, qui fournit des méthodes IVssWriterComponentsExt::GetComponentsExt::GetComponentCount qui permettent au demandeur d’obtenir des instances IVssComponentent.

Cela permet à un demandeur d’obtenir des candidats cibles dirigés en utilisant IVssComponent::GetDirectedTargetCount et IVssComponent::GetDirectedTarget pour le instance d’IVssComponent correspondant au composant qui gère le fichier (ou au composant qui définit le jeu de composants qui contient le fichier).