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


Метод IVssComponent::GetDifferencedFile (vswriter.h)

Метод GetDifferencedFile возвращает сведения о наборе файлов (указанном файле или файлах) для участия в добавочной или разностной резервной копии или восстановлении в виде разностного файла, то есть резервное копирование и восстановление, связанные с ним, должны быть реализованы так, как если бы все файлы копировались на носитель резервных копий и с него (в отличие от использования частичных файлов).

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

Синтаксис

HRESULT GetDifferencedFile(
  [in]  UINT     iDifferencedFile,
  [out] BSTR     *pbstrPath,
  [out] BSTR     *pbstrFilespec,
  [out] BOOL     *pbRecursive,
  [out] BSTR     *pbstrLsnString,
  [out] FILETIME *pftLastModifyTime
);

Параметры

[in] iDifferencedFile

Номер индекса разностного файла, который требуется изучить. Значение этого параметра является целым числом от 0 до n–1 включительно, где n — общее количество разностных файлов, связанных с данным компонентом (и его подкомпонентов, если он определяет набор компонентов). Значение n возвращается IVssComponent::GetDifferencedFilesCount.

[out] pbstrPath

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

Пользователям этого метода необходимо проверка, чтобы определить, заканчивается ли этот путь обратной косой чертой (\).

[out] pbstrFilespec

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

[out] pbRecursive

Адрес переменной, выделенной вызывающим объектом, которая получает логическое значение, указывающее, следует ли рекурсивно интерпретировать спецификацию файла для разностных файлов. Если задано значение TRUE, то во всей иерархии каталогов необходимо будет найти файлы, соответствующие спецификации файла pbstrFilespec , чтобы найти файлы, которые будут обрабатываться как разностные файлы во время добавочного или разностного резервного копирования. Если задано значение FALSE, поиск должен выполняться только в корневом каталоге.

[out] pbstrLsnString

Зарезервировано для последующего использования.

[out] pftLastModifyTime

Адрес переменной, выделенной вызывающим объектом, которая получает спецификацию модуля записи о времени последнего изменения файлов различий, выраженную в виде структуры FILETIME .

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

Ниже приведены допустимые коды возврата для этого метода.

Значение Значение
S_OK
Успешно возвращено значение атрибута.
E_INVALIDARG
Одно из значений параметра недопустимо.
E_OUTOFMEMORY
У вызывающего объекта не хватает памяти или других системных ресурсов.
VSS_E_OBJECT_NOT_FOUND
Файл, соответствующий указанному индексу, не найден.
VSS_E_INVALID_XML_DOCUMENT
Недопустимый XML-документ. Дополнительные сведения см. в журнале событий. Дополнительные сведения см. в разделе Обработка событий и ошибок в VSS.

Комментарии

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

Если вызов GetDifferencedFile выполнен успешно, вызывающий объект отвечает за освобождение строки, возвращаемой в параметрах pbstrPath и pbstrFilespec , путем вызова функции SysFreeString .

Поскольку средства записи могут указывать разностные файлы с помощью вызовов IVssComponent::AddDifferencedFilesByLastModifyTime в любое время до фактического резервного копирования файлов, Обычно при обработке события PostSnapshot (CVssWriter::OnPostSnapshot) во время резервного копирования GetDifferencedFile не вызывается до возвращения IVssBackupComponents::D oSnapshotSet успешно вернулся.

Метка времени, возвращаемая GetDifferencedFile , применяется ко всем файлам, которые соответствуют возвращенному пути (pbstrPath) и спецификации файла (pbstrFilespec).

Если значение метки времени, возвращаемое GetDifferencedFile (pftLastModifyTime), не равно нулю, инициатор запроса должен учитывать это значение независимо от собственных записей и сведений о файловой системе и использовать его, чтобы определить, следует ли включать разностный файл в разностную или добавочную резервную копию.

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

Разностные файлы могут иметь один из следующих вариантов:

При ссылке на набор файлов, который уже является частью компонента, сочетание пути, спецификации файла и флага рекурсии (wszPath, wszFileSpec и bRecursive соответственно), используемое при вызове GetDifferencedFile , должно соответствовать значению набора файлов, уже существующего в компоненте, или одному из его подкомпонентов (если компонент определяет набор компонентов).

Когда GetDifferencedFile возвращает новый файл с отличием, путь к файлу (pbstrPath) должен совпадать или находиться под пути, уже существующего в компоненте, или одного из его подкомпонентов (если компонент определяет набор компонентов).

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

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

В интерфейсе IVssComponent нет метода, который позволяет изменять или добавлять альтернативное сопоставление расположения для новых файлов, возвращаемых методом GetDifferencedFilesByLastModifyTime. Если альтернативное сопоставление расположений соответствует новому файлу, будет использоваться это альтернативное расположение.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header vswriter.h (включая Vss.h, VsWriter.h)
Библиотека VssApi.lib

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

IVssComponent

IVssComponent::AddDifferencedFilesByLastModifyTime

IVssComponent::GetDifferencedFilesCount

Добавочные и разностные резервные копии