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


Объектная модель VDS

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

VDS предоставляет косвенный доступ к устройствам хранения на основе узлов, таким как диски и устройства CD-ROM, а также к массивам дисков, управляемым аппаратными контроллерами RAID. Хотя некоторые сущности хранилища моделировают физические устройства, другие модели создают виртуальные конструкции: тома, секции и т. д. Объекты, описанные в этом разделе, представляют как физические, так и виртуальные сущности VDS.

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

Классификация объектов

Как показано на следующем рисунке, программы поставщика программного обеспечения реализуют объекты, которые моделиируют сущности на основе узлов; программы поставщика оборудования реализуют объекты, моделировающие внутренние и внешние аппаратные RAID-устройства; Остальные распространенные объекты являются независимыми от поставщика или реализуются VDS. Спиндл, который не является объектом VDS, является термином для универсальных носителей хранилища, составляющих экстенты диска или диска.

диаграмма, показывающая классификацию объектов, определенных как

Чтобы узнать больше о поведении каждого объекта, выберите из следующих разделов:

Создание объекта

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

Удаление объектов

Несколько методов VDS удаляют или преобразуют объекты VDS. Вызывающий объект может содержать ссылку по указателю интерфейса после возврата метода. Когда вызывающий объект освобождает интерфейс, VDS удаляет объект.

Что касается удаления объектов, вызывающие объекты должны воздерживаться от вызова всех элементов, кроме метода IUnknown::Release в этих интерфейсах. Поставщик должен быть достаточно надежным, чтобы иметь дело с вызывающими абонентами. Если вызывающий объект вызывает метод в удаленном объекте, поставщик должен вернуть VDS_E_OBJECT_DELETED.

Инициализация службы

VDS предоставляет идентификатор класса (Clsid) для загрузчика службы и объектов службы, но только загрузчик службы Clsid является общедоступным. Инициализация службы возникает, когда поставщики, вызывающее приложение и служба выполняют следующие задачи:

  • Каждый новый поставщик вызывает метод IVdsAdmin::RegisterProvider во время установки для регистрации в VDS. Вызов создает раздел реестра под кустом SYSTEM, определяемый идентификатором GUID объекта поставщика. Под этим ключом содержится Clsid объекта поставщика, имени, версии и GUID версии поставщика.

    Заметка

    Идентификаторы ИДЕНТИФИКАТОРов объектов поставщика являются постоянными; Идентификаторы графических идентификаторов программного обеспечения и оборудования не являются.

     

  • Приложение вызывает функцию CoCreateInstance, передавая загрузчик службы Clsid в качестве аргумента. Если указатель на объект загрузчика службы, приложение может запускать VDS локально или удаленно, передав требуемое имя компьютера в качестве параметра в метод IVdsServiceLoader::LoadService.

  • Когда исходное приложение подключается к службе, VDS сначала вызывает CoCreateInstance на каждом clsid, найденном в разделе реестра, а затем вызывает метод IVdsProviderPrivate::OnLoad для каждого поставщика, чтобы инициализировать программы.

О VDS

IVdsAdmin::RegisterProvider

IVdsServiceLoader::LoadService

IVdsProviderPrivate::OnLoad