Share via


Méthode MergeVirtualHardDisk de la classe Msvm_ImageManagementService

Fusionne un disque dur virtuel enfant dans une chaîne de différenciation avec un ou plusieurs disques durs virtuels parent dans la chaîne. Consultez Remarques pour connaître les restrictions d’utilisation de cette méthode.

Si l’utilisateur exécutant cette fonction n’a pas l’autorisation de mettre à jour les machines virtuelles, cette fonction échoue.

Syntaxe

uint32 MergeVirtualHardDisk(
  [in]  string              SourcePath,
  [in]  string              DestinationPath,
  [out] CIM_ConcreteJob REF Job
);

Paramètres

SourcePath [in]

Type : chaîne

Chemin d’accès complet qui spécifie l’emplacement du fichier de disque dur virtuel à fusionner.

DestinationPath [in]

Type : chaîne

Chemin d’accès complet qui spécifie l’emplacement du fichier de disque dur virtuel parent dans lequel les données doivent être fusionnées. Il peut s’agir du disque dur virtuel parent immédiat du fichier de fusion ou de l’image de disque parente à quelques niveaux de la chaîne de différenciation.

Travail [out]

Type : CIM_ConcreteJob

Si l’opération est effectuée de manière asynchrone, cette méthode retourne 4096 et ce paramètre contient une référence à un objet dérivé de CIM_ConcreteJob.

Valeur retournée

Type : uint32

Cette méthode peut retourner l’une des valeurs suivantes.

Terminé avec aucune erreur (0)

Paramètres de méthode vérifiés - Travail démarré (4096)

Échec (32768)

Accès refusé (32769)

Non pris en charge (32770)

État inconnu (32771)

Délai d’expiration (32772)

Paramètre non valide (32773)

Le système est en cours d’utilisation (32774)

État non valide pour cette opération (32775)

Type de données incorrect (32776)

Le système n’est pas disponible (32777)

Mémoire insuffisante (32778)

Fichier introuvable (32779)

Notes

Le disque dur virtuel enfant doit être hors connexion.

Seuls les types de disques durs virtuels suivants peuvent être utilisés avec cette méthode :

  • Disque dur virtuel différent
  • Différenciation du VHDX

L’accès à la classe Msvm_ImageManagementService peut être restreint par le filtrage UAC. Pour plus d’informations, consultez Contrôle de compte d’utilisateur et WMI.

Exemples

L’exemple C# suivant développe un fichier de disque dur virtuel. Les utilitaires référencés se trouvent dans Utilitaires communs pour les exemples de virtualisation (V2).

// Merges a VHD into a parent VHD.
// ChildPath: The path to the VHD to merge.</param>
// ParentPath: The path to the parent into which to merge.</param>
public static void MergeVirtualHardDisk(string ChildPath, string ParentPath)
{
    ManagementScope scope = new ManagementScope(@"root\virtualization\v2", null);
    ManagementObject imageService = Utility.GetServiceObject(scope, "Msvm_ImageManagementService");

    ManagementBaseObject inParams = imageService.GetMethodParameters("MergeVirtualHardDisk");

    inParams["SourcePath"] = ChildPath;
    inParams["DestinationPath"] = ParentPath;

    ManagementBaseObject outParams = imageService.InvokeMethod("MergeVirtualHardDisk", inParams, null);

    if ((UInt32)outParams["ReturnValue"] == ReturnCode.Started)
    {
        if (Utility.JobCompleted(outParams, scope))
        {
            Console.WriteLine("MergeVirtualHardDisk succeeded.");
        }
        else
        {
            Console.WriteLine("MergeVirtualHardDisk failed.");
        }
    }

    outParams.Dispose();
    inParams.Dispose();
    imageService.Dispose();
}

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows 8 [applications de bureau uniquement]
Serveur minimal pris en charge
Windows Server 2012 [applications de bureau uniquement]
Espace de noms
Racine\Virtualisation\V2
MOF
WindowsVirtualization.V2.mof
DLL
Vmms.exe

Voir aussi

CIM_ConcreteJob

Msvm_ImageManagementService