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


Метод IVdsPack::MigrateDisks (vds.h)

[Начиная с Windows 8 и Windows Server 2012, COM-интерфейс службы виртуальных дисков замечается API управления хранилищем Windows.]

Переносит набор дисков из одного пакета в другой.

Синтаксис

HRESULT MigrateDisks(
  [in]  VDS_OBJECT_ID *pDiskArray,
  [in]  LONG          lNumberOfDisks,
  [in]  VDS_OBJECT_ID TargetPack,
  [in]  BOOL          bForce,
  [in]  BOOL          bQueryOnly,
  [out] HRESULT       *pResults,
  [out] BOOL          *pbRebootNeeded
);

Параметры

[in] pDiskArray

Указатель на массив GUID; по одному для каждого диска.

[in] lNumberOfDisks

Количество дисков для миграции.

[in] TargetPack

GUID объекта pack.

[in] bForce

Если для этого параметра задано значение TRUE, VDS игнорирует все ошибки из этого метода и пытается выполнить миграцию дисков безоговорочно. Если задано значение FALSE, операция не продолжается. В некоторых случаях принудительная миграция может привести к потере данных.

[in] bQueryOnly

Если для этого параметра задано значение TRUE, миграция не выполняется. Если задано значение FALSE, операция продолжается.

[out] pResults

Адрес выделенного вызывающим объектом массива значений HRESULT . Количество элементов в массиве — lNumberOfDisks.

Если диск может быть перенесен или успешно перенесен, соответствующий элемент массива получает S_OK; в противном случае он получает код предупреждения или ошибки, возвращенный поставщиком. Список дополнительных кодов результатов см. в разделе Возвращаемые значения.

[out] pbRebootNeeded

Если для этого параметра задано значение TRUE, необходимо перезагрузить компьютер, чтобы завершить операцию. Если задано значение FALSE, операция завершается без перезапуска.

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

Этот метод может возвращать стандартные значения HRESULT, такие как E_INVALIDARG или E_OUTOFMEMORY, а также возвращаемые значения VDS. Он также может возвращать коды преобразованных системных ошибок с помощью макроса HRESULT_FROM_WIN32 . Ошибки могут возникать из самого VDS или из используемого базового поставщика VDS . Возможные возвращаемые значения включают следующие.

Возвращаемый код/значение Описание
S_OK
Миграция успешно завершена.
S_FALSE
По крайней мере один из дисков не может быть преобразован или может быть преобразован с предупреждением.
VDS_E_DISK_NOT_ONLINE
0x8004244BL
Один из дисков недоступен.
VDS_E_IMPORT_SET_INCOMPLETE
0x80042451L
Предпринята попытка импорта подмножества дисков во внешнем пакете.
 

С помощью pResults можно вернуть следующие предупреждения и ошибки:

Возвращаемый код/значение Описание
VDS_S_BOOT_PARTITION_NUMBER_CHANGE
0x00042436L
Номер секции загрузочного раздела изменился в результате операции миграции.
VDS_E_NO_FREE_SPACE
0x80042437L
На выбранном диске недостаточно свободного места для выполнения операции.
VDS_E_ACTIVE_PARTITION
0x80042438L
На выбранном диске обнаружен активный раздел, который не используется для загрузки активной операционной системы.
VDS_E_PARTITION_OF_UNKNOWN_TYPE
0x80042439L
Невозможно прочитать сведения о секции.
VDS_E_LEGACY_VOLUME_FORMAT
0x8004243AL
На выбранном диске обнаружен раздел неизвестного типа.
VDS_E_NON_CONTIGUOUS_DATA_PARTITIONS
0x8004243BL
Выбранный диск GPT содержит не базовую секцию данных, перед которой следует один или несколько базовых разделов данных.
VDS_E_MIGRATE_OPEN_VOLUME
0x8004243CL
Невозможно открыть том на выбранном диске.

Комментарии

VDS реализует этот метод.

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

Эту операцию следует принудительно выполнить при преобразовании базового диска в динамический формат диска, а в конце диска недостаточно места для базы данных LDM. Задайте для параметра bForceзначение true и принудительная операция, несмотря на ограничение пространства. Аналогичным образом, если раздел OEM находится в середине диска MBR со свободным местом или томами данных на обеих сторонах.

После переноса динамических дисков в динамический пакет следует использовать метод IVdsPack::GetProperties , чтобы определить, является ли исходный или конечный пакет пакетом в сети.

Сведения об использовании метода MigrateDisks для добавления внешних дисков в пакет см. в статье Добавление внешних дисков в пакет.

Требования

   
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header vds.h
Библиотека Uuid.lib

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

IVdsPack

IVdsPack::GetProperties