Метод 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 структур, указывающих диски, на которых создается том.
[in] lNumberOfDisks
Количество элементов в массиве, на которые указывает параметр pInputDiskArray .
[in] ulStripeSize
Чередуйте размер нового тома (в байтах).
[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 . Возможные возвращаемые значения включают следующие.
Возвращаемый код или значение | Описание |
---|---|
|
Том успешно создан. |
|
Уведомления о поступлении тома не получены. Может потребоваться вызвать IVdsService::Refresh. |
|
Том успешно создан, но VDS не удалось обновить параметры загрузки в хранилище данных конфигурации загрузки (BCD). |
|
Указанное выравнивание равно нулю. |
|
Указанное выравнивание не является степенью 2. |
|
Указанные диски не принадлежат к одному и тому же пакету. |
|
Служба LDM не выполнила метод . |
|
Размер передаваемого экстента слишком мал. |
|
Указанное количество дисков недопустимо для этой операции. |
|
Число элементов для тома должно быть больше нуля. |
|
Индексы элементов должны монотонно увеличиваться и начинаться с нуля. |
|
Переданный диск является устройством с компакт-диска или DVD. |
|
Эта операция не разрешена в этом пакете дисков. |
|
Число plex для тома должно быть больше нуля. |
|
Индексы plex должны монотонно увеличиваться и начинаться с нуля. |
|
Размер чередования в байтах должен быть равным 2 для чередуемых типов томов и RAID-5 и нулю для всех остальных типов томов. |
|
Указанный диск отсутствует. |
|
На съемном диске нет носителей, передаваемых через массив дисков. |
|
Недостаточно места на одном из дисков. |
|
Тип тома не поддерживается. |
|
По крайней мере один из переданных дисков не найден. |
|
Один диск не может участвовать в нескольких членах или нескольких сплетениях одного тома. |
|
Целевой пакет недоступен. |
|
Максимальное число секций (первичных секций или первичных секций с расширенной секцией) уже существует, когда вызывающий объект пытается создать дополнительную основную или расширенную секцию. |
|
Кэш динамического поставщика поврежден. |
|
На том разрешено не более 32 дисков. |
|
Размер тома слишком мал. |
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | vds.h |
Библиотека | Uuid.lib |