Freigeben über


CompactVirtualHardDisk-Methode der Msvm_ImageManagementService-Klasse

Komprimiert eine virtuelle Festplattendatei. Beim Komprimieren werden nicht verwendete Teile der virtuellen Festplatte freigegeben. Die virtuelle Festplatte wird nicht automatisch eingebunden. Hinweise zu Nutzungseinschränkungen für diese Methode finden Sie unter Hinweise.

Syntax

uint32 CompactVirtualHardDisk(
  [in]  string              Path,
  [in]  uint16              Mode,
  [out] CIM_ConcreteJob REF Job
);

Parameter

Pfad [in]

Typ: Zeichenfolge

Ein vollqualifizierter Pfad, der den Speicherort der zusammenführenden Datei angibt.

Modus [in]

Typ: uint16

Gibt den Modus für den kompakten Vorgang an. Dies muss einer der folgenden Werte sein.

Vollständig (0)

Schnell (1)

Retrim (2)

Pretrimmed (3)

Prezeroed (4)

Auftrag [out]

Typ: CIM_ConcreteJob

Ein Verweis auf den Auftrag (kann NULL sein, wenn die Aufgabe abgeschlossen ist).

Rückgabewert

Typ: uint32

Diese Methode kann einen der folgenden Werte zurückgeben.

Ohne Fehler abgeschlossen (0)

Methodenparameter überprüft – Auftrag gestartet (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 wurde nicht gefunden (32779)

Bemerkungen

Mit dieser Methode können nur die folgenden Typen virtueller Festplatten verwendet werden:

  • VHDX wurde behoben
  • 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 komprimiert. Die referenzierten Hilfsprogramme finden Sie unter Allgemeine Hilfsprogramme für die Virtualisierungsbeispiele (V2).

public enum VirtualHardDiskCompactMode
{
    Full = 0,
    Quick = 1,
    Retrim = 2,
    Pretrimmed = 3,
    Prezeroed = 4
}

public static void CompactVirtualHardDisk(string vhdPath, VirtualHardDiskCompactMode compactMode)
{
    ManagementScope scope = new ManagementScope(@"root\virtualization\v2", null);
    ManagementObject imageService = Utility.GetServiceObject(scope, "Msvm_ImageManagementService");

    ManagementBaseObject inParams = imageService.GetMethodParameters("CompactVirtualHardDisk");
    inParams["Path"] = vhdPath;
    inParams["Mode"] = compactMode;
    ManagementBaseObject outParams = imageService.InvokeMethod("CompactVirtualHardDisk", inParams, null);
    if ((UInt32)outParams["ReturnValue"] == ReturnCode.Started)
    {
        if (Utility.JobCompleted(outParams, scope))
        {
            Console.WriteLine("{0} was compacted successfully.", inParams["Path"]);
        }
        else
        {
            Console.WriteLine("Unable to compact {0}", inParams["Path"]);
        }
    }
    else
    {
        Console.WriteLine("Compact {0} returned error {1}", inParams["Path"], outParams["ReturnValue"]);
    }

    inParams.Dispose();
    outParams.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
Stamm\Virtualization\V2
MOF
WindowsVirtualization.V2.mof
DLL
Vmms.exe

Siehe auch

CIM_ConcreteJob

Msvm_ImageManagementService