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


Метод CreateSnapshot класса Msvm_VirtualSystemSnapshotService

Создает snapshot виртуальной машины.

Синтаксис

uint32 CreateSnapshot(
  [in]      CIM_ComputerSystem           REF AffectedSystem,
  [in]      string                           SnapshotSettings,
  [in]      uint16                           SnapshotType,
  [in, out] CIM_VirtualSystemSettingData REF ResultingSnapshot,
  [out]     CIM_ConcreteJob              REF Job
);

Параметры

AffectedSystem [in]

Ссылка на класс CIM_ComputerSystem, представляющий виртуальную машину для создания snapshot.

SnapshotSettings [in]

Строка, содержащая внедренный экземпляр класса CIM_SettingData, содержащий параметры для snapshot. Этот параметр является необязательным и может быть пустой строкой.

SnapshotType [in]

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

Полный моментальный снимок (2)

Полное snapshot виртуальной машины.

Моментальный снимок диска (3)

Моментальный снимок дисков виртуальных машин.

DmTF Reserved (..)

Конкретный поставщик (32768..65535)

ResultingSnapshot [in, out]

Ссылка на объект CIM_VirtualSystemSettingData, представляющий результирующий snapshot виртуальной машины.

Задание [out]

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

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

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

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

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

Сбой (2)

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

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

Недопустимое состояние (5)

Недопустимый тип (6)

DmTF Reserved (..)

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

Метод зарезервирован (4097..32767)

Конкретный поставщик (32768..65535)

Примеры

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

Важно!

Для правильной работы следующий код должен выполняться на сервере узла виртуальной машины и выполняться с правами администратора.

public static void CreateSnapshot(string vmName)
{
    ManagementScope scope = new ManagementScope(@"root\virtualization\v2", null);
    ManagementObject virtualSystemService = Utility.GetServiceObject(scope, "Msvm_VirtualSystemSnapshotService");

    ManagementBaseObject inParams = virtualSystemService.GetMethodParameters("CreateSnapshot");

    // Set the AffectedSystem property.
    ManagementObject vm = Utility.GetTargetComputer(vmName, scope);
    if (null == vm)
    {
        throw new ArgumentException(string.Format("The virtual machine \"{0}\" could not be found.", vmName));
    }

    inParams["AffectedSystem"] = vm.Path.Path;

    // Set the SnapshotSettings property.
#if(true)
    inParams["SnapshotSettings"] = "";
#else
    ManagementObject snapshotSettings = Utility.GetServiceObject(scope, "CIM_SettingData"); 
    inParams["SnapshotSettings"] = snapshotSettings.ToString();
#endif       
    // Set the SnapshotType property.
    inParams["SnapshotType"] = 2; // Full snapshot.

    ManagementBaseObject outParams = virtualSystemService.InvokeMethod("CreateSnapshot", inParams, null);

    if ((UInt32)outParams["ReturnValue"] == ReturnCode.Started)
    {
        if (Utility.JobCompleted(outParams, scope))
        {
            Console.WriteLine("Snapshot was created successfully.");

            MiscClass.GetAffectedElement(outParams, scope);
        }
        else
        {
            Console.WriteLine("Failed to create snapshot VM");
        }
    }
    else if ((UInt32)outParams["ReturnValue"] == ReturnCode.Completed)
    {
        Console.WriteLine("Snapshot was created successfully.");
    }
    else
    {
        Console.WriteLine("Create virtual system snapshot failed with error {0}", outParams["ReturnValue"]);
    }

    inParams.Dispose();
    outParams.Dispose();
    vm.Dispose();
    virtualSystemService.Dispose();
}

Требования

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

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

Msvm_VirtualSystemSnapshotService

CreateVirtualSystemSnapshot (V1)