Поделиться через


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

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

Если пользователь, выполняющий эту функцию, не имеет разрешения на обновление виртуальных машин, эта функция завершится ошибкой.

Синтаксис

uint32 MergeVirtualHardDisk(
  [in]  string              SourcePath,
  [in]  string              DestinationPath,
  [out] CIM_ConcreteJob REF Job
);

Параметры

SourcePath [in]

Тип: string

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

DestinationPath [in]

Тип: string

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

Задание [out]

Тип: CIM_ConcreteJob

Если операция выполняется асинхронно, этот метод возвращает значение 4096, а этот параметр будет содержать ссылку на объект, производный от CIM_ConcreteJob.

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

Тип: uint32

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

Выполнено без ошибок (0)

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

Сбой (32768)

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

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

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

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

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

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

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

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

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

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

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

Комментарии

Дочерний виртуальный жесткий диск должен находиться в автономном режиме.

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

  • Разностные виртуальные жесткие диски
  • Разностные VHDX

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

Примеры

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

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

Требования

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

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

CIM_ConcreteJob

Msvm_ImageManagementService