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


Метод IVdsVolume::Extend (vds.h)

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

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

Синтаксис

HRESULT Extend(
  [in]  VDS_INPUT_DISK *pInputDiskArray,
  [in]  LONG           lNumberOfDisks,
  [out] IVdsAsync      **ppAsync
);

Параметры

[in] pInputDiskArray

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

Примечание Вызывающие элементы не должны использовать индекс элемента по умолчанию в сочетании с методом Extend , если только том не содержит только один сплетение с одним элементом.
 

[in] lNumberOfDisks

Общее количество дисков в томе. Вызывающие элементы могут передавать ноль, если в сплетениях тома достаточно места для расширения тома; pInputDiskArray должно иметь значение NULL.

[out] ppAsync

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

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

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

Возвращаемый код/значение Описание
S_OK
Метод успешно конкурировал.
VDS_E_CANNOT_EXTEND
0x8004240EL
Невозможно расширить том, так как файловая система тома не поддерживает операцию.
VDS_E_NOT_ENOUGH_SPACE
0x8004240FL
Недостаточно места для расширения тома.
VDS_E_VOLUME_NOT_HEALTHY
0x8004243EL
Том не работоспособен.

Комментарии

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

VDS автоматически расширяет файловую систему в соответствии с расширенным размером тома. Файловая система должна поддерживать эту операцию. VDS расширяет файловую систему, но не том, если вызывающей системе не удается указать экстенты для использования.

Операции расширения и сжатия поддерживаются только на томах NTFS и RAW.

VDS применяет следующие правила при расширении тома:

  • Для простых и составных типов плексов VDS расширяет единственный член плекса любым экстентом диска, который еще не участвует в другом плексе, независимо от того, находится ли экстент на том же диске или нет. VDS использует экстенты диска в порядке, заданном вызывающим объектом, игнорируя индекс элемента экстента. Если только не на базовом диске, VDS может расширить единственный член plex с помощью любого экстента диска на том же диске или на другом диске.
  • Для чередующегося и чередующегося типов с лексами четности VDS присваивает экстент члену плекса следующим образом:
    • Экстент переходит к индексу элемента, заданному вызывающим объектом.
    • Экстент переходит к индексу элемента, который занимает тот же диск, когда вызывающей объекту не удается указать идентификатор элемента.
    VDS никогда не назначает экстент нескольким членам на одном диске. Вызывающий объект должен указать член для всех экстентов или нет; вызывающий объект не может указать член для некоторых экстентов, а не для других.
Когда вызывающий объект передает значение NULL для pInputDiskArray и ноль для lNumberOfDisks, VDS возвращает S_FALSE в асинхронном объекте и S_OK для метода . В этом случае S_OK указывает, что служба VDS запустила операцию, но операция является синхронной.

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

Требования

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

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

IVdsAsync

IVdsAsync::Wait

IVdsVolume

IVdsVolumeShrink::Shrink

VDS_ASYNC_OUTPUT

VDS_INPUT_DISK