Método CVssWriter::OnFreeze (vswriter.h)
O método OnFreeze é chamado por um gravador ao receber um evento Freeze no início de um congelamento de cópia de sombra. Um gravador usa esse método para executar operações necessárias para participar do congelamento ou para vetar o congelamento.
OnFreeze é um método virtual puro. Ele não é implementado pela classe base CVssWriter e deve ser implementado por classes derivadas.
Sintaxe
bool OnFreeze();
Retornar valor
A implementação desse método deve retornar true , exceto no caso de um erro fatal. Se ocorrer um erro fatal, o método deverá chamar o método CVssWriter::SetWriterFailure para fornecer uma descrição da falha antes de retornar false. Se ocorrer um erro não fatal, o método ainda deverá chamar SetWriterFailure , mas retornar true. Se o erro for causado por um problema transitório, o método deverá especificar VSS_E_WRITERERROR_RETRYABLE na chamada para SetWriterFailure.
Em todos os casos em que ocorre uma falha, o método deve gravar um evento no log de eventos para relatar o motivo exato da falha.
Comentários
Nesse método, o aplicativo gravador deve se colocar em um estado bem definido que seja compatível com a operação VSS.
Nesse método, o gravador deve concluir os preparativos finais para dar suporte à criação de uma cópia de sombra. Depois que a cópia de sombra for criada, o gravador receberá o evento Thaw e poderá continuar as operações normais.
Por padrão, a janela de tempo limite entre os eventos Freeze e Thaw é de 60 segundos. Ou seja, se um evento Thaw não for recebido com a janela de tempo limite, um evento Abort será gerado. Os gravadores podem alterar a janela de tempo limite no momento da inicialização definindo o argumento dwTimeoutFreeze como CVssWriter::Initialize.
A forma como um gravador se prepara para uma cópia de sombra é altamente dependente do aplicativo que a hospeda. Alguns aplicativos podem se dar ao luxo de manter todas as gravações e manter os dados em um estado consistente absoluto para esse período. Outros aplicativos, como muitos bancos de dados, não podem interromper o trabalho durante esse período, mas podem executar ações, como o ponto de verificação de seu estado, o que pode reduzir o tempo de recuperação de uma cópia de sombra criada durante essa janela.
Se o gravador não puder se colocar em um estado bem definido para o Freeze, o seguinte acontecerá:
- OnFreeze deve retornar false, vetando a cópia de sombra.
- O gravador chama CVssWriter::SetWriterFailure para fornecer uma descrição da falha.
- Um evento Abort será gerado após o retorno de OnFreeze de false
A janela de tempo limite para lidar com o evento Freeze normalmente é relativamente curta em comparação com a do evento PrepareForSnapshot . Portanto, os desenvolvedores devem evitar longas operações nesse método. Um uso típico pode ser suspender o registro em log pelo gravador.
É recomendável que todas as operações demoradas sejam tratadas por CVssWriter::OnPrepareSnapshot.
CVssWriter::OnThaw ou CVssWriter::OnAbort serão chamados após esse método.
Se esse método chamar o método CVssWriterEx2::GetSessionId, CVssWriter::SetWriterFailure ou CVssWriterEx2::SetWriterFailureEx , ele deverá fazê-lo no mesmo thread que chamou esse método. Para obter mais informações, consulte Tratamento de eventos do gravador.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | vswriter.h (inclua Vss.h, VsWriter.h) |
Biblioteca | VssApi.lib |