Использование компонентов инициатором запроса

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

Выбор компонента инициатора запроса во время резервного копирования

Во время операций резервного копирования запрашивающий объект импортирует данные компонента метаданных модуля записи с помощью методов IVssBackupComponents::CollectWriterMetadata и IVssBackupComponents::GetWriterMetadata (дополнительные сведения см. в разделе Обзор инициализации резервного копирования ).

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

При резервном копировании модуля записи инициатор запроса:

  • Необходимо явно включить все компоненты записи, которые не могут быть выбраны для компонентов резервного копирования, без выбора для предков резервного копирования с помощью IVssBackupComponents::AddComponent для добавления компонента в документ компонентов резервного копирования
  • Может явно включать любой из компонентов записи, который можно выбрать для компонентов резервного копирования с помощью IVssBackupComponents::AddComponent, чтобы добавить компонент в документ компонентов резервного копирования.
  • Если компонент, который можно выбрать для резервного копирования, определяет набор компонентов, его явное включение неявно включает все члены набора компонентов, независимо от того, можно ли выбрать для резервного копирования. Эти компоненты не добавляются в документ о компонентах резервного копирования.

При добавлении выбранного компонента резервного копирования или неизбираемого для компонентов резервного копирования без выбора для предков резервного копирования в документ компонентов резервной копии инициатор запроса указывает следующее:

  • Экземпляр модуля записи, управляющего компонентом
  • Идентификатор класса модуля записи
  • Логический путь к компоненту (который может иметь значение NULL)
  • Имя компонента

Если компонент не соответствует спецификации, будет возвращена ошибка.

Если такой компонент существует, VSS создает интерфейс IVssComponent для компонента в документе о компонентах резервного копирования. Эти сведения будут доступны и изменяемы для модуля записи и инициатора запроса. Для выбираемого компонента, определяющего набор компонентов, он описывает не только свойства компонента, но и все содержащиеся в нем подкомпоненты.

Сведения о неявно добавленных компонентах недоступны в документе Компоненты резервного копирования. Кроме того, в документе о компонентах резервного копирования нет сведений о файлах. Чтобы получить эти сведения, инициатору запроса необходимо изучить документы метаданных модуля записи (которые уже были прочитаны) в контексте выбранных компонентов, сохраненных в документе Компонентов резервного копирования.

Выбор компонента инициатора запроса во время восстановления

Во время операций восстановления инициатору запроса не следует импортировать сведения о компонентах из модулей записи, которые в настоящее время активны в системе через IVssBackupComponents::GatherWriterMetadata, так как состояние выполняющихся в данный момент процессов не обязательно будет отражать состояние процессов при создании резервной копии.

Он по-прежнему должен создавать событие Identify с помощью IVssBackupComponents::GatherWriterMetadata, чтобы создать событие Identify и определить, какие модули записи в настоящее время находятся в системе и их состояние.

Инициатор запроса извлекает сохраненный документ компонентов резервной копии во время его инициализации, а также сохраненные документы метаданных модуля записи (дополнительные сведения см. в разделе Обзор инициализации восстановления ).

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

Однако существуют некоторые отличия:

  • Если компонент уже был явно включен в документ компонентов резервного копирования во время резервного копирования, если он включен для восстановления (явно или неявно), IVssBackupComponents::SetSelectedForRestore используется для явного добавления его в документ компонентов резервного копирования для восстановления.
  • Если компонент был неявно включен в резервную копию и не может быть выбран для восстановления без выбора для предков восстановления, что в случае резервной копии подразумевает необходимость явного включения, компонент не включается явным образом (то есть он не добавляется в документ компонентов резервного копирования с помощью IVssBackupComponents::SetSelectedForRestore). Такой компонент следует рассматривать как неявно выбранный для восстановления.
  • Из этих компонентов, неявно выбранных для резервного копирования (независимо от того, был ли этот компонент выбран для резервного копирования или нет), в документ компонентов резервного копирования можно добавить только те компоненты, которые можно выбрать для восстановления с помощью IVssBackupComponents::AddRestoreSubcomponent.
  • Выбор компонентов для компонентов восстановления может определять набор компонентов для восстановления так же, как и для компонентов резервного копирования. Этот компонент, который можно выбрать для компонента восстановления, определяет этот набор компонентов для операции восстановления.

Модуль записи без компонентов, явно выбранных для восстановления до создания события PreRestore , не будет получать события VSS.

Инициаторы запроса и записи могут получить доступ к сохраненным сведениям о компонентах с помощью интерфейса IVssComponent . С помощью интерфейса IVssComponent модули записи могут изменять некоторые параметры компонентов, явно включенных в документ компонентов резервного копирования, для поддержки восстановления (например , целевого объекта восстановления). Если он определяет набор компонентов, изменения модуля записи явно включенного компонента распространяются на его подкомпоненты. Кроме того, интерфейс предоставляет механизм для передачи сведений об успешном и неудачном восстановлении между модулем записи и инициатором запроса.

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

Сведения о типах выбора и их использовании см. в разделе Работа с возможностью выбора и логическими путями .

Использование сведений о документе компонента модуля записи инициатором запроса

Каждый компонент уникально идентифицируется идентификатором класса модуля записи его родительского модуля записи, его именем и логическим путем.

Инициатор запроса может использовать интерфейс IVssWriterComponentsExt , возвращаемый методом IVssBackupComponents::GetWriterComponents , для получения сведений о каждом хранимом компоненте.

Имя компонента и логический путь (среди других элементов) можно найти с помощью интерфейса IVssComponent, возвращаемого IVssWriterComponentsExt::GetComponent.

Примечание

На этапе восстановления инициатор запроса должен вызывать IVssWriterComponentsExt::GetComponent или IVssWriterComponentsExt::GetComponentCount только после возврата вызова IVssBackupComponents::P reRestore , чтобы у модуля записи было время на обновление документа компонентов резервного копирования. Одним из примеров такого обновления является изменение целевого объекта восстановления.

 

Сведения о родительском средстве записи каждого сохраненного выбранного компонента можно найти в IVssWriterComponentsExt::GetWriterInfo.

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

С помощью интерфейса IVssExamineWriterMetadata у инициатора запроса теперь есть полные сведения о компонентах, включая спецификацию пути (из интерфейса IVssWMComponent ), как для выбираемых, так и для неизбираемых компонентов, которые необходимы для резервного копирования или восстановления.

Это одна из причин, по которой для инициатора запроса важно сохранить состояние собственного документа компонентов резервного копирования и документы метаданных модуля записи, резервные копии которых он создает.

Дополнительные сведения см. в разделе Работа с возможностью выбора и логическими путями .