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

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

Расширяет LUN на указанное количество байтов.

Синтаксис

HRESULT Extend(
  [in]  ULONGLONG     ullNumberOfBytesToAdd,
  [in]  VDS_OBJECT_ID *pDriveIdArray,
  [in]  LONG          lNumberOfDrives,
  [out] IVdsAsync     **ppAsync
);

Параметры

[in] ullNumberOfBytesToAdd

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

[in] pDriveIdArray

Указатель на массив GUID дисков. Поставщик использует эти диски для расширения LUN. Диски используются в указанной последовательности; Поставщик использует все экстенты на одном диске перед переходом к следующему и останавливается, когда LUN был расширен на запрошенное количество байтов.

Кроме того, вызывающий объект может направить поставщика на автоматический выбор дисков, передав null в этом параметре и ноль в параметре lNumberOfDrives . Обратите внимание, что передача NULL допустима, только если параметр lNumberOfDrives равен нулю.

[in] lNumberOfDrives

Количество дисков, указанное в параметре pDriveIdArray . Если вызывающий объект передает ноль, поставщик выбирает диски.

[out] ppAsync

Адрес указателя интерфейса IVdsAsync , который VDS инициализирует при возврате. Вызывающие элементы должны освободить интерфейс. Используйте этот интерфейс для отмены, ожидания или запроса состояния операции.

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

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

Возвращаемый код или значение Описание
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
Это возвращаемое значение сигнализирует о проблеме программного обеспечения или связи внутри поставщика, который кэширует сведения о массиве. Для восстановления кэша используйте метод IVdsHwProvider::Reenumerate , за которым следует метод IVdsHwProvider::Refresh .
VDS_E_OBJECT_DELETED
0x8004240BL
Объект LUN больше не присутствует.
VDS_E_OBJECT_STATUS_FAILED
0x80042431L
LUN находится в состоянии сбоя и не может выполнить запрошенную операцию.
VDS_E_ANOTHER_CALL_IN_PROGRESS
0x80042404L
Выполняется другая операция; Эта операция не может продолжаться до завершения предыдущей операции или операций.
VDS_E_OBJECT_NOT_FOUND
0x80042405L
Может быть возвращен из любого метода, который принимает константу VDS_OBJECT_ID . Это возвращаемое значение указывает, что идентификатор не ссылается на существующий объект.
VDS_E_NOT_SUPPORTED
0x80042400L
Эта операция или сочетание параметров не поддерживается этим поставщиком.
VDS_E_NOT_ENOUGH_SPACE
0x8004240FL
Недостаточно места для этой операции.
VDS_E_NOT_ENOUGH_DRIVE
0x80042410L
Для выполнения этой операции в подсистеме недостаточно свободных дисков.

Комментарии

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

После расширения LUN вызывающий объект должен использовать управляющий код IOCTL_DISK_UPDATE_PROPERTIES , чтобы обновленный размер диска отображался на компьютере, для которого lun не маскируется.

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

Если параметр ullNumberOfBytesToAdd больше, чем количество байтов, доступных на дисках, указанных в параметре pDriveIdArray , сначала используйте указанные диски, а затем выберите из доступных дисков. Если таких дисков недостаточно для расширения LUN на запрошенное количество байтов, верните ошибку и не расширяйте LUN.

Требования

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

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

IVdsAsync

IVdsHwProvider::Reenumerate

IVdsHwProvider::Refresh

IVdsLun

IVdsLun::Shrink

IVdsSubSystem::CreateLun