Método IVssComponent::GetDifferencedFile (vswriter.h)

El método GetDifferencedFile devuelve información sobre un conjunto de archivos (un archivo o archivos especificado) para participar en una copia de seguridad o restauración incremental o diferencial como un archivo diferenciado, es decir, las copias de seguridad y restauraciones asociadas a él se implementarán como si se copian archivos completos en los medios de copia de seguridad y desde ellos (en lugar de usar archivos parciales).

Un solicitante o un escritor pueden llamar a este método durante las operaciones de copia de seguridad o restauración.

Sintaxis

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

Parámetros

[in] iDifferencedFile

Número de índice del archivo que se va a examinar. El valor de este parámetro es un entero comprendido entre 0 y n-1, donde n es el número total de archivos diferenciados asociados a un componente determinado (y sus subcomponentes si define un conjunto de componentes). IVssComponent::GetDifferencedFilesCount devuelve el valor de n.

[out] pbstrPath

Dirección de una variable asignada por el autor de la llamada que recibe una cadena que contiene la ruta de acceso a los archivos diferenciados.

Los usuarios de este método deben comprobar si esta ruta termina con una barra diagonal inversa (\).

[out] pbstrFilespec

Dirección de una variable asignada por el autor de la llamada que recibe una cadena que contiene la especificación de archivo de los archivos diferenciados.

[out] pbRecursive

Dirección de una variable asignada por el autor de la llamada que recibe un valor booleano que especifica si la especificación de archivo para los archivos diferenciados se debe interpretar de forma recursiva. Si es TRUE, es necesario buscar archivos que coincidan con la especificación de archivo pbstrFilespec para buscar los archivos que se van a controlar como archivos diferenciales durante las copias de seguridad incrementales o diferenciales. Si es FALSE, solo se debe buscar en el directorio raíz.

[out] pbstrLsnString

Reservado para uso futuro.

[out] pftLastModifyTime

Dirección de una variable asignada por el autor de la llamada que recibe la especificación del escritor de la hora de la última modificación de los archivos de diferencia, expresada como una estructura FILETIME .

Valor devuelto

A continuación se muestran los códigos de retorno válidos para este método.

Valor Significado
S_OK
Devolvió correctamente el valor del atributo.
E_INVALIDARG
Uno de los valores de parámetro no es válido.
E_OUTOFMEMORY
El autor de la llamada no tiene memoria u otros recursos del sistema.
VSS_E_OBJECT_NOT_FOUND
No se encontró ningún archivo diferente correspondiente al índice proporcionado.
VSS_E_INVALID_XML_DOCUMENT
El documento XML no es válido. Compruebe el registro de eventos para obtener más información. Para obtener más información, consulte Control de eventos y errores en VSS.

Comentarios

Un solicitante o un escritor pueden llamar a GetDifferencedFile durante las operaciones de copia de seguridad o restauración.

Si la llamada a GetDifferencedFile se realiza correctamente, el autor de la llamada es responsable de liberar la cadena que se devuelve en los parámetros pbstrPath y pbstrFilespec mediante una llamada a la función SysFreeString .

Como los escritores pueden indicar archivos diferentes con llamadas a IVssComponent::AddDifferencedFilesByLastModifyTime en cualquier momento antes de la copia de seguridad real de los archivos, Normalmente, al controlar un evento PostSnapshot (CVssWriter::OnPostSnapshot), durante las copias de seguridad GetDifferencedFile no se llama útilmente antes de la devolución de IVssBackupComponents::D oSnapshotSet se ha devuelto correctamente.

La marca de tiempo devuelta por GetDifferencedFile se aplica a todos los archivos que coinciden con la ruta de acceso devuelta (pbstrPath) y la especificación de archivo (pbstrFilespec).

Si el valor de marca de tiempo devuelto por GetDifferencedFile (pftLastModifyTime) es distinto de cero, un solicitante debe respetar este valor independientemente de sus propios registros y la información del sistema de archivos y usarlo para determinar si el archivo diferenciado debe incluirse en una copia de seguridad diferencial o incremental.

Si la marca de tiempo devuelta por GetDifferencedFile es cero, el solicitante puede usar información del sistema de archivos y sus propios registros para determinar si los archivos diferenciales deben incluirse en una copia de seguridad diferencial o incremental.

Los archivos con diferencias pueden ser cualquiera de los siguientes:

Al hacer referencia a un conjunto de archivos que ya forma parte del componente, la combinación de ruta de acceso, especificación de archivo y marca de recursividad (wszPath, wszFileSpec y bRecursive, respectivamente) usada al llamar a GetDifferencedFile debe coincidir con la de un conjunto de archivos ya en el componente o uno de sus subcomponentes (si el componente define un conjunto de componentes).

Cuando GetDifferencedFile devuelve un nuevo archivo distinto, la ruta de acceso del archivo (pbstrPath) debe coincidir o estar debajo de una ruta de acceso ya en el componente, o bien uno de sus subcomponentes (si el componente define un conjunto de componentes).

Además, los archivos devueltos por GetDifferencedFile aún no deben administrarse por componente o escritor.

Si se infringe alguno de estos criterios, constituyen un error por parte del escritor y deben notificarse.

No hay ningún método en la interfaz IVssComponent que permita cambiar o agregar una asignación de ubicación alternativa para los nuevos archivos devueltos por GetDifferencedFilesByLastModifyTime. Si una asignación de ubicación alternativa corresponde al nuevo archivo, se usará esa ubicación alternativa.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado vswriter.h (incluya Vss.h, VsWriter.h)
Library VssApi.lib

Consulte también

IVssComponent

IVssComponent::AddDifferencedFilesByLastModifyTime

IVssComponent::GetDifferencedFilesCount

Copias de seguridad incrementales y diferenciales