Partager via


Méthode ConvertVirtualHardDisk de la classe Msvm_ImageManagementService

Convertit un disque dur virtuel existant en un autre type ou format. Cette méthode crée un disque dur virtuel et ne convertit pas le disque dur virtuel source en place. Consultez Remarques pour connaître les restrictions d’utilisation de cette méthode.

Syntaxe

uint32 ConvertVirtualHardDisk(
  [in]  string              SourcePath,
  [in]  string              VirtualDiskSettingData,
  [out] CIM_ConcreteJob REF Job
);

Paramètres

SourcePath [in]

Type : chaîne

Chemin complet du fichier de disque dur virtuel source à convertir. Ce fichier ne sera pas modifié à la suite de cette opération.

VirtualDiskSettingData [in]

Type : chaîne

Représentation sous forme de chaîne de la classe Msvm_VirtualHardDiskSettingData qui spécifie les attributs du nouveau disque dur virtuel. Les propriétés Path, Type, Format, ParentPath, BlockSize et LogicalSectorSize doivent être définies. La propriété ParentPath peut avoir la valeur Null si elle n’est pas nécessaire. Définissez les propriétés BlockSize et LogicalSectorSize sur 0 pour utiliser les valeurs par défaut.

Pour spécifier le format (VHD ou VHDX) du nouveau disque dur virtuel, définissez l’extension du chemin d’accès sur la valeur appropriée (« .vhd » ou « .vhdx »). La propriété Format doit correspondre à l’extension de nom de fichier dans le chemin d’accès.

La propriété LogicalSectorSize sera ignorée .

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

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

  • Disque dur virtuel fixe
  • VHDX corrigé
  • Disque dur virtuel dynamique
  • VHDX dynamique
  • 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 convertit un disque dur virtuel. Les utilitaires référencés se trouvent dans Utilitaires communs pour les exemples de virtualisation (V2).

public enum VirtualHardDiskType
{
    Fixed = 2,
    Dynamic = 3,
    Differencing = 4
}

public enum VirtualHardDiskFormat
{
    Unknown = 0,
    Vhd = 2,
    Vhdx = 3
}

public static void ConvertVirtualHardDisk(string sourcePath, string destinationPath, VirtualHardDiskType diskType, VirtualHardDiskFormat diskFormat)
{
    ManagementScope scope = new ManagementScope(@"root\virtualization\V2", null);
    ManagementObject imageService = Utility.GetServiceObject(scope, "Msvm_ImageManagementService");

    ManagementPath path = new ManagementPath()
    {
        Server = null,
        NamespacePath = imageService.Path.Path,
        ClassName = "Msvm_VirtualHardDiskSettingData"
    };

    ManagementClass settingsClass = new ManagementClass(path);
    ManagementObject settingsInstance = settingsClass.CreateInstance();
    settingsInstance["Path"] = destinationPath;
    settingsInstance["Type"] = diskType;
    settingsInstance["Format"] = diskFormat;
    settingsInstance["ParentPath"] = null;
    settingsInstance["MaxInternalSize"] = 0;
    settingsInstance["BlockSize"] = 0;
    settingsInstance["LogicalSectorSize"] = 0;
    settingsInstance["PhysicalSectorSize"] = 0;

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

    inParams["SourcePath"] = sourcePath;
    inParams["VirtualDiskSettingData"] = settingsInstance.GetText(TextFormat.WmiDtd20);

    ManagementBaseObject outParams = imageService.InvokeMethod("ConvertVirtualHardDisk", inParams, null);
    UInt32 result = (UInt32)outParams["ReturnValue"];
    if (ReturnCode.Completed == result)
    {
        Console.WriteLine("{0} was converted successfully.", inParams["SourcePath"]);
    }
    else if (ReturnCode.Started == result)
    {
        if (Utility.JobCompleted(outParams, scope))
        {
            Console.WriteLine("{0} was converted successfully.", inParams["SourcePath"]);
        }
        else
        {
            Console.WriteLine("Unable to convert {0}", inParams["SourcePath"]);
        }
    }
    else
    {
        // The method failed.
        Console.WriteLine("ConvertVirtualHardDisk failed with error code {0}.", result);
    }

    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

ConvertVirtualHardDisk (V1)

CIM_ConcreteJob

Msvm_ImageManagementService