RegisterApplicationRecoveryCallback 함수(winbase.h)
복구를 위해 애플리케이션의 활성 instance 등록합니다.
구문
HRESULT RegisterApplicationRecoveryCallback(
[in] APPLICATION_RECOVERY_CALLBACK pRecoveyCallback,
[in, optional] PVOID pvParameter,
[in] DWORD dwPingInterval,
[in] DWORD dwFlags
);
매개 변수
[in] pRecoveyCallback
복구 콜백 함수에 대한 포인터입니다. 자세한 내용은 ApplicationRecoveryCallback을 참조하세요.
[in, optional] pvParameter
콜백 함수에 전달할 변수에 대한 포인터입니다. NULL일 수 있습니다.
[in] dwPingInterval
복구 ping 간격(밀리초)입니다. 기본적으로 간격은 5초(RECOVERY_DEFAULT_PING_INTERVAL)입니다. 최대 간격은 5분입니다. 0을 지정하면 기본 간격이 사용됩니다.
지정된 간격 내에 ApplicationRecoveryInProgress 함수를 호출하여 ARR에 여전히 적극적으로 복구 중임을 나타내야 합니다. 그렇지 않으면 WER은 복구를 종료합니다. 일반적으로 각 반복이 ping 간격보다 오래 지속되지 않는 루프에서 복구를 수행합니다. 각 반복은 복구 작업 블록과 ApplicationRecoveryInProgress 호출을 수행합니다. 또한 ApplicationRecoveryInProgress 를 사용하여 사용자가 복구를 취소할지 여부를 결정하기 때문에 더 작은 간격을 고려해야 하므로 불필요하게 많은 작업을 수행하지 않습니다.
[in] dwFlags
다음에 사용하도록 예약됩니다. 0으로 설정됩니다.
반환 값
이 함수는 성공에 대한 S_OK 반환하거나 다음 오류 코드 중 하나를 반환합니다.
반환 코드 | 설명 |
---|---|
|
내부 오류; 등록에 실패했습니다. |
|
ping 간격은 5분을 초과할 수 없습니다. |
설명
애플리케이션에서 처리되지 않은 예외가 발생하거나 응답하지 않는 경우 WER(Windows 오류 보고)은 지정된 복구 콜백을 호출합니다. 콜백을 사용하여 데이터 및 상태 정보를 저장해야 합니다. RegisterApplicationRestart 함수를 호출하여 WER이 애플리케이션을 다시 시작하도록 요청하는 경우 이 정보를 사용할 수 있습니다.
설치 관리자가 애플리케이션의 구성 요소를 업데이트하려는 경우 WER은 복구 콜백을 호출하지 않습니다. 업데이트 사례에 데이터 및 상태 정보를 저장하려면 WM_QUERYENDSESSION 처리하고 메시지를WM_ENDSESSION 합니다. 자세한 내용은 각 메시지를 참조하세요. 이러한 메시지에 응답하기 위한 시간 제한은 5초입니다. 사용 가능한 복구 시간의 대부분은 30초가 있는 WM_CLOSE 메시지에 있습니다.
업데이트할 수 있는 콘솔 애플리케이션은 CTRL_C_EVENT 알림을 사용하여 복구를 시작합니다(자세한 내용은 HandlerRoutine 콜백 함수 참조). 처리기가 완료되는 시간 제한은 30초입니다.
애플리케이션은 복구에 필요한 시간을 단축하기 위해 주기적인 베이스에 데이터 및 상태 정보를 저장하는 것을 고려해야 합니다.
요구 사항
지원되는 최소 클라이언트 | Windows Vista [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2008 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | winbase.h(Windows.h 포함) |
라이브러리 | Kernel32.lib |
DLL | Kernel32.dll |