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


Функция MergeVirtualDisk (virtdisk.h)

Объединяет дочерний виртуальный жесткий диск (VHD) в разностной цепочке с одним или несколькими родительскими виртуальными дисками в цепочке.

Синтаксис

DWORD MergeVirtualDisk(
  [in]           HANDLE                         VirtualDiskHandle,
  [in]           MERGE_VIRTUAL_DISK_FLAG        Flags,
  [in]           PMERGE_VIRTUAL_DISK_PARAMETERS Parameters,
  [in, optional] LPOVERLAPPED                   Overlapped
);

Параметры

[in] VirtualDiskHandle

Дескриптор открытого виртуального диска, который должен быть открыт с помощью флага VIRTUAL_DISK_ACCESS_METAOPS . Сведения об открытии виртуального диска см. в разделе Функция OpenVirtualDisk .

[in] Flags

Должно быть MERGE_VIRTUAL_DISK_FLAG_NONE значением перечисления MERGE_VIRTUAL_DISK_FLAG .

[in] Parameters

Указатель на допустимую структуру MERGE_VIRTUAL_DISK_PARAMETERS , содержащую данные параметров слияния.

[in, optional] Overlapped

Необязательный указатель на допустимую структуру OVERLAPPED , если требуется асинхронная операция.

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

Состояние запроса.

Если функция выполнена успешно, возвращаемое значение будет ERROR_SUCCESS.

Если функция завершается сбоем, возвращаемое значение представляет собой код ошибки. Дополнительные сведения см. в разделе Системные коды ошибок.

Комментарии

Примечание Все вхождения термина диск в этом разделе относятся к виртуальным дискам. Термин резервное хранилище относится к физическому хранилищу дисков, в котором находится файл или файлы образа VHD.
 
Функция MergeVirtualDisk обновляет все блоки данных на одном или нескольких родительских дисках блоками данных с дочернего диска, на который ссылается параметр VirtualDiskHandle . По сути, это операция копирования.

Слияние диска требует отсоединения затронутых дисков во время операции.

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

Значение RWDepth диска должно быть больше глубины слияния, указанной в OPEN_VIRTUAL_DISK_PARAMETERS.

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

Родительский диск, с которым выполняется слияние, изменяется таким образом, чтобы представлять те же данные, что и на дочернем разностном диске, на котором выполняется слияние.

Все ранее существующие данные на родительском диске, в которые выполняется слияние, перезаписываются.

Если операция слияния прерывается, дочерний диск по-прежнему доступен для использования. Функцию MergeVirtualDisk можно выполнить повторно, чтобы завершить слияние.

Глубина запроса на слияние — это количество родительских файлов образов VHD в цепочке разностных объектов, которые необходимо объединить. Например, если элемент MergeDepth имеет значение 1, блоки данных из указанного разностного диска перемещаются в родительский элемент. Если элемент MergeDepth имеет значение 2, а родительский диск указанного разностного диска также является разностным (это означает, что в цепочке есть третий диск), блоки данных с первого и второго дисков перемещаются на третий диск (блоки с первого диска имеют приоритет над блоками со второго во время окончательной операции).

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

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

Требования

   
Минимальная версия клиента Windows 7
Минимальная версия сервера Windows Server 2008 R2
Целевая платформа Windows
Header virtdisk.h
Библиотека VirtDisk.lib
DLL VirtDisk.dll

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

Сведения о виртуальном жестком диске

Справочник по VHD