Método ConvertVirtualHardDisk da classe Msvm_ImageManagementService
Converte um disco rígido virtual existente em um tipo ou formato diferente. Esse método cria um novo disco rígido virtual e não converte o disco rígido virtual de origem em vigor. Consulte Comentários sobre restrições de uso para este método.
Sintaxe
uint32 ConvertVirtualHardDisk(
[in] string SourcePath,
[in] string VirtualDiskSettingData,
[out] CIM_ConcreteJob REF Job
);
Parâmetros
-
SourcePath [in]
-
Tipo: cadeia de caracteres
O caminho totalmente qualificado do arquivo de disco rígido virtual de origem a ser convertido. Esse arquivo não será modificado como resultado dessa operação.
-
VirtualDiskSettingData [in]
-
Tipo: cadeia de caracteres
Uma representação de cadeia de caracteres da classe Msvm_VirtualHardDiskSettingData que especifica os atributos do novo disco rígido virtual. As propriedades Path, Type, Format, ParentPath, BlockSize e LogicalSectorSize devem ser definidas. A propriedade ParentPath poderá ser Null se não for necessária. Defina as propriedades BlockSize e LogicalSectorSize como 0 para usar os valores padrão.
Para especificar o formato (VHD ou VHDX) do novo disco rígido virtual, defina a extensão do Caminho para o valor apropriado (".vhd" ou ".vhdx"). A propriedade Format deve corresponder à extensão de nome de arquivo no Caminho.
A propriedade LogicalSectorSize será ignorada.
-
Trabalho [out]
-
Tipo: CIM_ConcreteJob
Se a operação for executada de forma assíncrona, esse método retornará 4096 e esse parâmetro conterá uma referência a um objeto derivado de CIM_ConcreteJob.
Valor retornado
Tipo: uint32
Esse método pode retornar um dos valores a seguir.
-
Concluído sem erro (0)
-
Parâmetros de método verificados – Trabalho iniciado (4096)
-
Falha (32768)
-
Acesso negado (32769)
-
Sem suporte (32770)
-
O status é desconhecido (32771)
-
Tempo limite (32772)
-
Parâmetro inválido (32773)
-
O sistema está em uso (32774)
-
Estado inválido para esta operação (32775)
-
Tipo de dados incorreto (32776)
-
O sistema não está disponível (32777)
-
Memória insuficiente (32778)
-
Arquivo não encontrado (32779)
Comentários
Somente os seguintes tipos de discos rígidos virtuais podem ser usados com este método:
- VHD fixo
- Corrigido O VHDX
- VHD dinâmico
- VHDX dinâmico
- VHD diferencial
- VHDX de diferenciação
O acesso à classe Msvm_ImageManagementService pode ser restrito pela Filtragem UAC. Para obter mais informações, consulte Controle de conta de usuário e WMI.
Exemplos
O exemplo de C# a seguir converte um disco rígido virtual. Os utilitários referenciados podem ser encontrados em Utilitários comuns para os exemplos de virtualização (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 | Valor |
---|---|
Cliente mínimo com suporte |
Windows 8 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte |
Windows Server 2012 [somente aplicativos da área de trabalho] |
Namespace |
Root\Virtualization\V2 |
MOF |
|
DLL |
|