Compartir a través de


Método CompactVirtualHardDisk de la clase Msvm_ImageManagementService

Compacta un archivo de disco duro virtual. La compactación es el proceso de liberar partes no utilizados del disco duro virtual. El disco duro virtual no se monta automáticamente. Consulte Comentarios para ver las restricciones de uso de este método.

Sintaxis

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

Parámetros

Ruta de acceso [in]

Tipo: cadena

Ruta de acceso completa que especifica la ubicación del archivo de combinación.

Modo [in]

Tipo: uint16

Especifica el modo para la operación compacta. Debe ser uno de los valores siguientes.

Completo (0)

Rápido (1)

Retrim (2)

Pretrimmed (3)

Prezeroed (4)

Trabajo [out]

Tipo: CIM_ConcreteJob

Referencia al trabajo (puede ser Null si se completa la tarea).

Valor devuelto

Tipo: uint32

Este método puede devolver uno de los valores siguientes.

Completado sin error (0)

Parámetros del método activados: trabajo iniciado (4096)

Error (32768)

Acceso denegado (32769)

No compatible (32770)

El estado es desconocido (32771)

Tiempo de espera (32772)

Parámetro no válido (32773)

El sistema está en uso (32774)

Estado no válido para esta operación (32775)

Tipo de datos incorrecto (32776)

El sistema no está disponible (32777)

Memoria insuficiente (32778)

Archivo no encontrado (32779)

Comentarios

Solo se pueden usar los siguientes tipos de discos duros virtuales con este método:

  • VHDX corregido
  • VHD dinámico
  • VHDX dinámico
  • VHD de diferenciación
  • Diferenciación de VHDX

El acceso a la clase Msvm_ImageManagementService podría estar restringido por el filtrado de UAC. Para obtener más información, vea Control de cuentas de usuario y WMI.

Ejemplos

En el siguiente ejemplo de C# se compacta un disco duro virtual. Las utilidades a las que se hace referencia se pueden encontrar en Utilidades comunes para los ejemplos de virtualización (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();
}

Requisitos

Requisito Value
Cliente mínimo compatible
Windows 8 [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows Server 2012 [solo aplicaciones de escritorio]
Espacio de nombres
Root\Virtualization\V2
MOF
WindowsVirtualization.V2.mof
Archivo DLL
Vmms.exe

Consulte también

CIM_ConcreteJob

Msvm_ImageManagementService