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
WindowsVirtualization.V2.mof
DLL
Vmms.exe

Siehe auch

ConvertVirtualHardDisk (V1)

CIM _ ConcreteJob

Msvm _ ImageManagementService