Método MergeVirtualHardDisk da classe Msvm_ImageManagementService
Mescla um disco rígido virtual filho em uma cadeia de diferenciação com um ou mais discos rígidos virtuais pai na cadeia. Consulte Comentários sobre restrições de uso para este método.
Se o usuário que executa essa função não tiver permissão para atualizar as máquinas virtuais, essa função falhará.
Sintaxe
uint32 MergeVirtualHardDisk(
[in] string SourcePath,
[in] string DestinationPath,
[out] CIM_ConcreteJob REF Job
);
Parâmetros
-
SourcePath [in]
-
Tipo: cadeia de caracteres
Um caminho totalmente qualificado que especifica o local do arquivo de disco rígido virtual a ser mesclado.
-
DestinationPath [in]
-
Tipo: cadeia de caracteres
Um caminho totalmente qualificado que especifica o local do arquivo de disco rígido virtual pai no qual os dados devem ser mesclados. Esse pode ser o disco rígido virtual pai imediato do arquivo de mesclagem ou da imagem de disco pai alguns níveis acima da cadeia de diferenciação.
-
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
O disco rígido virtual filho deve estar offline.
Somente os seguintes tipos de discos rígidos virtuais podem ser usados com este método:
- 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 expande um arquivo de disco rígido virtual. Os utilitários referenciados podem ser encontrados em Utilitários comuns para os exemplos de virtualização (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 | 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 |
|