Método ConvertVirtualHardDisk de la clase Msvm_ImageManagementService
Convierte un disco duro virtual existente en otro tipo o formato. Este método crea un nuevo disco duro virtual y no convierte el disco duro virtual de origen en su lugar. Consulte Comentarios para conocer las restricciones de uso de este método.
Sintaxis
uint32 ConvertVirtualHardDisk(
[in] string SourcePath,
[in] string VirtualDiskSettingData,
[out] CIM_ConcreteJob REF Job
);
Parámetros
-
SourcePath [in]
-
Tipo: cadena
Ruta de acceso completa del archivo de disco duro virtual de origen que se va a convertir. Este archivo no se modificará como resultado de esta operación.
-
VirtualDiskSettingData [in]
-
Tipo: cadena
Representación de cadena de la clase Msvm_VirtualHardDiskSettingData que especifica los atributos del nuevo disco duro virtual. Las propiedades Path, Type, Format, ParentPath, BlockSize y LogicalSectorSize deben establecerse. La propiedad ParentPath puede ser Null si no es necesaria. Establezca las propiedades BlockSize y LogicalSectorSize en 0 para usar los valores predeterminados.
Para especificar el formato (VHD o VHDX) del nuevo disco duro virtual, establezca la extensión de la ruta de acceso al valor adecuado (".vhd" o ".vhdx"). La propiedad Format debe coincidir con la extensión de nombre de archivo en la ruta de acceso.
Se omitirá la propiedad LogicalSectorSize .
-
Trabajo [salida]
-
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 siguientes valores.
-
Completado sin error (0)
-
Parámetros de método comprobados: 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:
- Disco duro virtual corregido
- VHDX corregido
- VHD dinámico
- VHDX dinámico
- Diferenciación del disco duro virtual
- Diferenciación de VHDX
El filtrado UAC puede restringir el acceso a la clase Msvm_ImageManagementService . Para obtener más información, consulte Control de cuentas de usuario y WMI.
Ejemplos
En el ejemplo de C# siguiente se convierte 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 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();
}
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 |
|
Archivo DLL |
|