Share via


Método CVssWriter::OnFreeze (vswriter.h)

Un escritor llama al método OnFreeze al recibir un evento Freeze al principio de una inmovilización de instantáneas. Un escritor usa este método para realizar operaciones necesarias para participar en la inmovilización o para vetar la inmovilización.

OnFreeze es un método virtual puro. La clase base CVssWriter no la implementa y debe implementarse mediante clases derivadas.

Sintaxis

bool OnFreeze();

Valor devuelto

La implementación de este método debe devolver true , excepto en el caso de un error irrecuperable. Si se produce un error irrecuperable, el método debe llamar al método CVssWriter::SetWriterFailure para proporcionar una descripción del error antes de devolver false. Si se produce un error nofatal, el método debe seguir llamando a SetWriterFailure pero devolver true. Si el error se debe a un problema transitorio, el método debe especificar VSS_E_WRITERERROR_RETRYABLE en la llamada a SetWriterFailure.

En todos los casos en los que se produce un error, el método debe escribir un evento en el registro de eventos para notificar el motivo exacto del error.

Comentarios

En este método, la aplicación de escritura debe colocarse en un estado bien definido que sea compatible con la operación de VSS.

En este método, el escritor debe completar los preparativos finales para admitir la creación de una instantánea. Una vez creada la instantánea, el escritor recibirá el evento Thaw y podrá continuar con las operaciones normales.

De forma predeterminada, la ventana de tiempo de espera entre los eventos Freeze y Thaw es de 60 segundos. Es decir, si no se recibe un evento Thaw con la ventana de tiempo de espera, se generará un evento Abort. Los escritores pueden cambiar la ventana de tiempo de espera en el momento de la inicialización estableciendo el argumento dwTimeoutFreeze en CVssWriter::Initialize.

La forma en que un escritor se prepara para una instantánea depende en gran medida de la aplicación que lo hospeda. Algunas aplicaciones pueden permitirse almacenar todas las escrituras y mantener los datos en un estado coherente absoluto durante este período. Otras aplicaciones, como muchas bases de datos, no pueden detener el trabajo durante este período, pero pueden realizar acciones, como controlar su estado, lo que puede reducir el tiempo de recuperación de una instantánea creada durante esta ventana.

Si el escritor no puede colocarse en un estado bien definido para la inmovilización, sucede lo siguiente:

  1. OnFreeze debe devolver false, vetando la instantánea.
  2. El escritor llama a CVssWriter::SetWriterFailure para proporcionar una descripción del error.
  3. Se generará un evento Abort tras la devolución onFreeze de false.
Los escritores nunca deben producir una excepción de este método o cualquier otro CVssWriter(Ex)::OnXxx método de devolución de llamada.

La ventana de tiempo de espera para controlar el evento Freeze suele ser relativamente corta en comparación con la de controlar el evento PrepareForSnapshot . Por lo tanto, los desarrolladores deben evitar operaciones largas en este método. Un uso típico podría ser suspender el registro por el escritor.

Se recomienda que CVssWriter::OnPrepareSnapshot controle todas las operaciones que requieren mucho tiempo.

Se llamará a CVssWriter::OnThaw o CVssWriter::OnAbort después de este método.

Si este método llama al método CVssWriterEx2::GetSessionId, CVssWriter::SetWriterFailure o CVssWriterEx2::SetWriterFailureEx , debe hacerlo en el mismo subproceso que llamó a este método. Para obtener más información, vea Writer Event Handling.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [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

CVssWriter

CVssWriter::OnAbort

CVssWriter::OnPreRestore

CVssWriter::OnPrepareBackup

CVssWriter::OnPrepareSnapshot

CVssWriter::OnThaw

CVssWriter::SetWriterFailure