Метод 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 |
|
DLL |
|