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


Метод IVdsDrive::QueryExtents (vds.h)

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

Возвращает массив экстентов на диске, включая выделенные и нераспределенные экстенты.

Синтаксис

HRESULT QueryExtents(
  [out] VDS_DRIVE_EXTENT **ppExtentArray,
  [out] LONG             *plNumberOfExtents
);

Параметры

[out] ppExtentArray

Указатель на массив VDS_DRIVE_EXTENT структур, передаваемых вызывающим элементом. Вызывающие элементы должны освободить этот массив с помощью функции CoTaskMemFree .

[out] plNumberOfExtents

Указатель на количество экстентов диска, возвращаемых в структуре VDS_DRIVE_EXTENT .

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

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

Возвращаемый код или значение Описание
S_OK
Сведения об экстентах были успешно возвращены. Для диска без экстентов массив пуст, значение plNumberOfExtents равно 0, а значение ppExtentArray равно NULL.
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
Это возвращаемое значение сигнализирует о проблеме программного обеспечения или связи внутри поставщика, который кэширует сведения о массиве. Для восстановления кэша используйте метод IVdsHwProvider::Reenumerate , за которым следует метод IVdsHwProvider::Refresh .
VDS_E_OBJECT_DELETED
0x8004240BL
Объект диска больше не существует.
VDS_E_OBJECT_STATUS_FAILED
0x80042431L
Диск находится в состоянии сбоя и не может выполнить запрошенную операцию.
VDS_E_ANOTHER_CALL_IN_PROGRESS
0x80042404L
Выполняется другая операция; Эта операция не может продолжаться до завершения предыдущей операции или операций.
VDS_E_NOT_SUPPORTED
0x80042400L
Подсистема не поддерживает этот метод.

Комментарии

Диск может вносить экстенты в любое количество LUN, и эти LUN могут быть расмаскированы для любого количества различных компьютеров в сети. Используйте метод IVdsLunPlex::QueryExtents , чтобы просмотреть все экстенты плекса LUN.

Элемент LunId каждой структуры VDS_DRIVE_EXTENT указывает GUID для LUN, в который участвует каждый выделенный экстент. Следовательно, вы можете использовать результат этого метода для определения количества LUN, в которые вносит диск, подсчитывая количество уникальных значений LunId , возвращаемых в ppExtentArray.

Требования

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

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

IVdsDrive

IVdsHwProvider::Reenumerate

IVdsHwProvider::Refresh

IVdsLunPlex::QueryExtents

VDS_DRIVE_EXTENT