ConvertVirtualHardDisk-Methode der Msvm _ ImageManagementService-Klasse
Konvertiert eine vorhandene virtuelle Festplatte in einen anderen Typ oder ein anderes Format. Diese Methode erstellt eine neue virtuelle Festplatte und konvertiert die virtuelle Quellfestplatte nicht an Ort und Stelle. Informationen zu Verwendungseinschränkungen für diese Methode finden Sie unter Hinweise.
Syntax
uint32 ConvertVirtualHardDisk(
[in] string SourcePath,
[in] string VirtualDiskSettingData,
[out] CIM_ConcreteJob REF Job
);
Parameter
-
SourcePath [ In]
-
Typ: Zeichenfolge
Der vollqualifizierte Pfad der zu konvertierende virtuellen Quellfestplattedatei. Diese Datei wird aufgrund dieses Vorgangs nicht geändert.
-
VirtualDiskSettingData [ In]
-
Typ: Zeichenfolge
Eine Zeichenfolgendarstellung der Msvm _ VirtualHardDiskSettingData-Klasse, die die Attribute der neuen virtuellen Festplatte angibt. Die Eigenschaften Path, Type, Format, ParentPath, BlockSize und LogicalSectorSize müssen festgelegt werden. Die ParentPath-Eigenschaft kann NULL sein, wenn sie nicht benötigt wird. Legen Sie die Eigenschaften BlockSize und LogicalSectorSize auf 0 fest, um die Standardwerte zu verwenden.
Um das Format (VHD oder VHDX) der neuen virtuellen Festplatte anzugeben, legen Sie die Erweiterung des Pfads auf den entsprechenden Wert (".vhd" oder ".vhdx") fest. Die Format-Eigenschaft muss mit der Dateinamenerweiterung im Pfad übereinstimmen.
Die LogicalSectorSize-Eigenschaft wird ignoriert.
-
Auftrag [ out]
-
Typ: CIM _ ConcreteJob
Wenn der Vorgang asynchron ausgeführt wird, gibt diese Methode 4096 zurück, und dieser Parameter enthält einen Verweis auf ein objekt, das von CIM _ ConcreteJobabgeleitet wurde.
Rückgabewert
Typ: uint32
Diese Methode kann einen der folgenden Werte zurückgeben.
-
Abgeschlossen ohne Fehler (0)
-
Überprüfte Methodenparameter – Auftragsstart (4096)
-
Fehler (32768)
-
Zugriff verweigert (32769)
-
Nicht unterstützt (32770)
-
Status ist unbekannt (32771)
-
Timeout (32772)
-
Ungültiger Parameter (32773)
-
System wird verwendet (32774)
-
Ungültiger Zustand für diesen Vorgang (32775)
-
Falscher Datentyp (32776)
-
System ist nicht verfügbar (32777)
-
Nicht genügend Arbeitsspeicher (32778)
-
Datei nicht gefunden (32779)
Hinweise
Mit dieser Methode können nur die folgenden Arten von virtuellen Festplatten verwendet werden:
- Korrigierte VHD
- VHDX korrigiert
- Dynamische VHD
- Dynamische VHDX
- Differenzierende VHD
- Differenzierende VHDX
Der Zugriff auf die Msvm _ ImageManagementService-Klasse kann durch die UAC-Filterung eingeschränkt werden. Weitere Informationen finden Sie unter Benutzerkontensteuerung und WMI.
Beispiele
Im folgenden C#-Beispiel wird eine virtuelle Festplatte konvertiert. Die referenzierten Hilfsprogramme finden Sie unter Allgemeine Hilfsprogramme für die Virtualisierungsbeispiele (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();
}
Anforderungen
| Anforderung | Wert |
|---|---|
| Unterstützte Mindestversion (Client) |
[Windows 8 Nur Desktop-Apps] |
| Unterstützte Mindestversion (Server) |
[Windows Server 2012 Nur Desktop-Apps] |
| Namespace |
Root \ Virtualization \ V2 |
| MOF |
|
| DLL |
|