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 |
|
DLL |
|