Compartilhar via


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
WindowsVirtualization.V2.mof
DLL
Vmms.exe

Confira também

CIM_ConcreteJob

Msvm_ImageManagementService