Compartilhar via


Método CompactVirtualHardDisk da classe Msvm_ImageManagementService

Compacta um arquivo de disco rígido virtual. Compactação é o processo de liberar partes não utilizadas do disco rígido virtual. O disco rígido virtual não é montado automaticamente. Consulte Comentários sobre restrições de uso para este método.

Sintaxe

uint32 CompactVirtualHardDisk(
  [in]  string              Path,
  [in]  uint16              Mode,
  [out] CIM_ConcreteJob REF Job
);

Parâmetros

Caminho [in]

Tipo: cadeia de caracteres

Um caminho totalmente qualificado que especifica o local do arquivo de mesclagem.

Modo [in]

Tipo: uint16

Especifica o modo para a operação compacta. Esse deve ser um dos valores a seguir.

Completo (0)

Rápido (1)

Repetição (2)

Pré-configurado (3)

Pré-zero (4)

Trabalho [out]

Tipo: CIM_ConcreteJob

Uma referência ao trabalho (pode ser Null se a tarefa for concluída).

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:

  • 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 compacta 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 VirtualHardDiskCompactMode
{
    Full = 0,
    Quick = 1,
    Retrim = 2,
    Pretrimmed = 3,
    Prezeroed = 4
}

public static void CompactVirtualHardDisk(string vhdPath, VirtualHardDiskCompactMode compactMode)
{
    ManagementScope scope = new ManagementScope(@"root\virtualization\v2", null);
    ManagementObject imageService = Utility.GetServiceObject(scope, "Msvm_ImageManagementService");

    ManagementBaseObject inParams = imageService.GetMethodParameters("CompactVirtualHardDisk");
    inParams["Path"] = vhdPath;
    inParams["Mode"] = compactMode;
    ManagementBaseObject outParams = imageService.InvokeMethod("CompactVirtualHardDisk", inParams, null);
    if ((UInt32)outParams["ReturnValue"] == ReturnCode.Started)
    {
        if (Utility.JobCompleted(outParams, scope))
        {
            Console.WriteLine("{0} was compacted successfully.", inParams["Path"]);
        }
        else
        {
            Console.WriteLine("Unable to compact {0}", inParams["Path"]);
        }
    }
    else
    {
        Console.WriteLine("Compact {0} returned error {1}", inParams["Path"], outParams["ReturnValue"]);
    }

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