CVssWriter::OnFreeze 메서드(vswriter.h)
OnFreeze 메서드는 기록기에서 섀도 복사본 고정 시작 시 Freeze 이벤트를 수신할 때 호출됩니다. 작성기는 이 메서드를 사용하여 동결에 참여하거나 동결을 거부하는 데 필요한 작업을 수행합니다.
OnFreeze 는 순수 가상 메서드입니다. CVssWriter 기본 클래스에서 구현되지 않으며 파생 클래스에서 구현해야 합니다.
구문
bool OnFreeze();
반환 값
이 메서드의 구현은 심각한 오류가 발생한 경우를 제외하고 true 를 반환해야 합니다. 심각한 오류가 발생하는 경우 메서드는 CVssWriter::SetWriterFailure 메서드를 호출하여 false를 반환하기 전에 오류에 대한 설명을 제공해야 합니다. 심각하지 않은 오류가 발생하는 경우 메서드는 여전히 SetWriterFailure를 호출하지만 true를 반환해야 합니다. 일시적인 문제로 인해 오류가 발생하는 경우 메서드는 SetWriterFailure 호출에서 VSS_E_WRITERERROR_RETRYABLE 지정해야 합니다.
오류가 발생하는 모든 경우 메서드는 이벤트 로그에 이벤트를 작성하여 정확한 실패 이유를 보고해야 합니다.
설명
이 메서드에서 기록기 애플리케이션은 VSS 작업과 호환되는 잘 정의된 상태로 전환되어야 합니다.
이 메서드에서 작성기는 섀도 복사본 만들기를 지원하기 위한 최종 준비를 완료해야 합니다. 섀도 복사본이 만들어지면 기록기는 Thaw 이벤트를 수신하고 정상적인 작업을 계속할 수 있습니다.
기본적으로 Freeze 이벤트와 Thaw 이벤트 사이의 제한 시간은 60초입니다. 즉, 시간 제한 기간으로 Thaw 이벤트가 수신되지 않으면 Abort 이벤트가 생성됩니다. 작성기는 dwTimeoutFreeze 인수를 CVssWriter::Initialize로 설정하여 초기화 시 시간 제한 기간을 변경할 수 있습니다.
기록기가 섀도 복사본을 준비하는 방법은 섀도 복사본을 호스트하는 애플리케이션에 따라 크게 달라집니다. 일부 애플리케이션은 모든 쓰기를 유지하고 이 기간 동안 데이터를 절대 일관성 있는 상태로 유지할 수 있습니다. 다른 애플리케이션(예: 많은 데이터베이스)은 이 기간 동안 작업을 중지할 수 없지만 상태 검사점 지정과 같은 작업을 수행할 수 있으므로 이 기간 동안 생성된 섀도 복사본의 복구 시간이 단축될 수 있습니다.
기록기가 Freeze에 대해 잘 정의된 상태로 전환할 수 없는 경우 다음이 발생합니다.
- OnFreeze는false를 반환하고 섀도 복사본을 거부해야 합니다.
- 작성기는 CVssWriter::SetWriterFailure 를 호출하여 실패에 대한 설명을 제공합니다.
- OnFreeze가 false를 반환하면 중단 이벤트가 생성됩니다.
Freeze 이벤트를 처리하기 위한 제한 시간은 일반적으로 PrepareForSnapshot 이벤트 처리에 비해 상대적으로 짧습니다. 따라서 개발자는 이 메서드에서 긴 작업을 피해야 합니다. 일반적으로 작성기에서 로깅을 일시 중단하는 것이 일반적일 수 있습니다.
시간이 많이 걸리는 모든 작업은 CVssWriter::OnPrepareSnapshot에서 처리하는 것이 좋습니다.
CVssWriter::OnThaw 또는 CVssWriter::OnAbort는 이 메서드 다음에 호출됩니다.
이 메서드가 CVssWriterEx2::GetSessionId, CVssWriter::SetWriterFailure 또는 CVssWriterEx2::SetWriterFailureEx 메서드를 호출하는 경우 이 메서드를 호출한 동일한 스레드에서 호출해야 합니다. 자세한 내용은 기록기 이벤트 처리를 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | vswriter.h(Vss.h, VsWriter.h 포함) |
라이브러리 | VssApi.lib |