Compartir a través de


Método MergeVirtualHardDisk de la clase Msvm_ImageManagementService

Combina un disco duro virtual secundario en una cadena de diferenciación con uno o varios discos duros virtuales primarios en la cadena. Consulte Comentarios para ver las restricciones de uso de este método.

Si el usuario que ejecuta esta función no tiene permiso para actualizar las máquinas virtuales, se producirá un error en esta función.

Sintaxis

uint32 MergeVirtualHardDisk(
  [in]  string              SourcePath,
  [in]  string              DestinationPath,
  [out] CIM_ConcreteJob REF Job
);

Parámetros

SourcePath [in]

Tipo: cadena

Ruta de acceso completa que especifica la ubicación del archivo de disco duro virtual que se va a combinar.

DestinationPath [in]

Tipo: cadena

Ruta de acceso completa que especifica la ubicación del archivo de disco duro virtual primario en el que se van a combinar los datos. Podría ser el disco duro virtual primario inmediato del archivo de combinación o la imagen del disco primario unos niveles superior a la cadena de diferenciación.

Trabajo [out]

Tipo: CIM_ConcreteJob

Si la operación se realiza de forma asincrónica, este método devolverá 4096 y este parámetro contendrá una referencia a un objeto derivado de CIM_ConcreteJob.

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

El disco duro virtual secundario debe estar sin conexión.

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

  • 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 expande un archivo de disco duro virtual. Las utilidades a las que se hace referencia se pueden encontrar en Utilidades comunes para los ejemplos de virtualización (V2).

// Merges a VHD into a parent VHD.
// ChildPath: The path to the VHD to merge.</param>
// ParentPath: The path to the parent into which to merge.</param>
public static void MergeVirtualHardDisk(string ChildPath, string ParentPath)
{
    ManagementScope scope = new ManagementScope(@"root\virtualization\v2", null);
    ManagementObject imageService = Utility.GetServiceObject(scope, "Msvm_ImageManagementService");

    ManagementBaseObject inParams = imageService.GetMethodParameters("MergeVirtualHardDisk");

    inParams["SourcePath"] = ChildPath;
    inParams["DestinationPath"] = ParentPath;

    ManagementBaseObject outParams = imageService.InvokeMethod("MergeVirtualHardDisk", inParams, null);

    if ((UInt32)outParams["ReturnValue"] == ReturnCode.Started)
    {
        if (Utility.JobCompleted(outParams, scope))
        {
            Console.WriteLine("MergeVirtualHardDisk succeeded.");
        }
        else
        {
            Console.WriteLine("MergeVirtualHardDisk failed.");
        }
    }

    outParams.Dispose();
    inParams.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