Метод CompactVirtualHardDisk класса Msvm_ImageManagementService

Сжимает файл виртуального жесткого диска. Сжатие — это процесс освобождения неиспользуемых частей виртуального жесткого диска. Виртуальный жесткий диск не подключается автоматически. Сведения об ограничениях использования для этого метода см. в разделе Примечания.

Синтаксис

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

Параметры

Путь [в]

Тип: строка

Полный путь, указывающий расположение файла слияния.

Режим [в]

Тип: uint16

Указывает режим для операции сжатия. Это должно быть одно из следующих значений.

Полный (0)

Быстрый (1)

Повторная попытка (2)

Pretrimmed (3)

Предварительно зануленные (4)

Задание [out]

Тип: CIM_ConcreteJob

Ссылка на задание (может иметь значение Null , если задача завершена).

Возвращаемое значение

Тип: uint32

Этот метод может возвращать одно из следующих значений.

Завершено без ошибок (0)

Проверенные параметры метода — задание запущено (4096)

Сбой (32768)

Доступ запрещен (32769)

Не поддерживается (32770)

Состояние неизвестно (32771)

Время ожидания (32772)

Недопустимый параметр (32773)

Система используется (32774)

Недопустимое состояние для этой операции (32775)

Неправильный тип данных (32776)

Система недоступна (32777)

Нехватка памяти (32778)

Файл не найден (32779)

Комментарии

С этим методом можно использовать только следующие типы виртуальных жестких дисков:

  • Исправлена версия VHDX
  • Динамический виртуальный жесткий диск
  • Динамический VHDX
  • Разностный виртуальный жесткий диск
  • Разностный VHDX

Доступ к классу Msvm_ImageManagementService может быть ограничен фильтрацией UAC. Дополнительные сведения см. в разделе Контроль учетных записей пользователей и WMI.

Примеры

В следующем примере C# выполняется сжатие виртуального жесткого диска. Эти служебные программы можно найти в разделе Общие служебные программы для примеров виртуализации (версия 2).

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();
}

Требования

Требование Значение
Минимальная версия клиента
Windows 8 [только классические приложения]
Минимальная версия сервера
Windows Server 2012 [только классические приложения]
Пространство имен
Root\Virtualization\V2
MOF
WindowsVirtualization.V2.mof
DLL
Vmms.exe

См. также раздел

CIM_ConcreteJob

Msvm_ImageManagementService