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


Метод IVdsPack2::CreateVolume2 (vds.h)

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

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

Синтаксис

HRESULT CreateVolume2(
  [in]  VDS_VOLUME_TYPE type,
  [in]  VDS_INPUT_DISK  *pInputDiskArray,
  [in]  LONG            lNumberOfDisks,
  [in]  ULONG           ulStripeSize,
  [in]  ULONG           ulAlign,
  [out] IVdsAsync       **ppAsync
);

Параметры

[in] type

Значение перечисления VDS_VOLUME_TYPE , указывающее тип создаваемого тома.

[in] pInputDiskArray

Массив VDS_INPUT_DISK структур, указывающих диски, на которых создается том.

Примечание Размер этого массива должен быть не более 32 объектов, так как Windows накладывает ограничение, в котором с одним томом может использоваться не более 32 дисков.
 

[in] lNumberOfDisks

Количество элементов в массиве, на которые указывает параметр pInputDiskArray .

[in] ulStripeSize

Чередуйте размер нового тома (в байтах).

Примечание Размер полосы должен быть 65536, если тип VDS_VT_STRIPE или VDS_VT_PARITY; В противном случае размер полосы должен быть 0.
 

[in] ulAlign

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

Windows 7, Windows Server 2008 R2, Windows Vista и Windows Server 2008: На базовом диске метод CreateVolume2 игнорирует этот параметр и раздел реестраHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vds\Alignment . Это известная проблема, и она решается. В качестве обходного решения используйте метод IVdsAdvancedDisk::CreatePartition или IVdsCreatePartitionEx::CreatePartitionEx для создания секций на базовом диске, чтобы они были правильно выровнены. Динамические секции и тома выравниваются с помощью значений в следующем разделе реестра:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vds\Alignment

Выравнивание по умолчанию составляет 1 МБ, если диск равен 4 ГБ или больше, или 64 КБ, если диск меньше 4 ГБ.

[out] ppAsync

Указатель на интерфейс IVdsAsync , который после успешного завершения получает интерфейс IVdsAsync для мониторинга и управления этой операцией. Вызывающие абоненты должны освободить полученный интерфейс после завершения работы с ним. Если в интерфейсе вызывается метод IVdsAsync::Wait и возвращается успешное значение HRESULT, интерфейсы, возвращаемые в структуре VDS_ASYNC_OUTPUT , должны быть освобождены путем вызова метода IUnknown::Release для каждого указателя интерфейса. Однако если wait возвращает значение HRESULT сбоя или параметр pHrResultwait получает значение HRESULT сбоя, указатели интерфейса в структуре VDS_ASYNC_OUTPUT имеют значение NULL и не должны освобождаться. Вы можете проверить наличие значений HRESULT успешно или неудачно с помощью макросов SUCCEEDED и FAILED , определенных в Winerror.h.

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

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

Возвращаемый код или значение Описание
S_OK
Том успешно создан.
VDS_S_NO_NOTIFICATION
0x00042517L
Уведомления о поступлении тома не получены. Может потребоваться вызвать IVdsService::Refresh.
VDS_S_UPDATE_BOOTFILE_FAILED
0x00042434L
Том успешно создан, но VDS не удалось обновить параметры загрузки в хранилище данных конфигурации загрузки (BCD).
VDS_E_ALIGN_IS_ZERO
0x80042590L
Указанное выравнивание равно нулю.
VDS_E_ALIGN_NOT_A_POWER_OF_TWO
0x8004258FL
Указанное выравнивание не является степенью 2.
VDS_E_DISK_NOT_FOUND_IN_PACK
0x8004252DL
Указанные диски не принадлежат к одному и тому же пакету.
VDS_E_DMADMIN_METHOD_CALL_FAILED
0x80042420L
Служба LDM не выполнила метод .
VDS_E_EXTENT_SIZE_LESS_THAN_MIN
0x80042433L
Размер передаваемого экстента слишком мал.
VDS_E_INVALID_DISK_COUNT
0x80042526L
Указанное количество дисков недопустимо для этой операции.
VDS_E_INVALID_MEMBER_COUNT
0x80042522L
Число элементов для тома должно быть больше нуля.
VDS_E_INVALID_MEMBER_ORDER
0x80042524L
Индексы элементов должны монотонно увеличиваться и начинаться с нуля.
VDS_E_INVALID_OPERATION
0x80042415L
Переданный диск является устройством с компакт-диска или DVD.
VDS_E_INVALID_PACK
0x8004251AL
Эта операция не разрешена в этом пакете дисков.
VDS_E_INVALID_PLEX_COUNT
0x80042521L
Число plex для тома должно быть больше нуля.
VDS_E_INVALID_PLEX_ORDER
0x80042523L
Индексы plex должны монотонно увеличиваться и начинаться с нуля.
VDS_E_INVALID_STRIPE_SIZE
0x80042525L
Размер чередования в байтах должен быть равным 2 для чередуемых типов томов и RAID-5 и нулю для всех остальных типов томов.
VDS_E_MISSING_DISK
0x80042454L
Указанный диск отсутствует.
VDS_E_NO_MEDIA
0x80042412L
На съемном диске нет носителей, передаваемых через массив дисков.
VDS_E_NOT_ENOUGH_SPACE
0x8004240FL
Недостаточно места на одном из дисков.
VDS_E_NOT_SUPPORTED
0x80042400L
Тип тома не поддерживается.
VDS_E_OBJECT_NOT_FOUND
0x80042405L
По крайней мере один из переданных дисков не найден.
VDS_E_ONE_EXTENT_PER_DISK
0x80042531L
Один диск не может участвовать в нескольких членах или нескольких сплетениях одного тома.
VDS_E_PACK_OFFLINE
0x80042444L
Целевой пакет недоступен.
VDS_E_PARTITION_LIMIT_REACHED
0x80042407L
Максимальное число секций (первичных секций или первичных секций с расширенной секцией) уже существует, когда вызывающий объект пытается создать дополнительную основную или расширенную секцию.
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
Кэш динамического поставщика поврежден.
VDS_E_VOLUME_DISK_COUNT_MAX_EXCEEDED
0x80042529L
На том разрешено не более 32 дисков.
VDS_E_VOLUME_TOO_SMALL
0x8004242CL
Размер тома слишком мал.

Требования

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

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

IVdsPack2

IVdsPack::CreateVolume