WerRegisterRuntimeExceptionModule 함수(werapi.h)

크래시에 대한 WER(사용자 지정 Windows 오류 보고)을 제공하는 데 사용되는 사용자 지정 런타임 예외 처리기를 등록합니다.

구문

HRESULT WerRegisterRuntimeExceptionModule(
  [in]           PCWSTR pwszOutOfProcessCallbackDll,
  [in, optional] PVOID  pContext
);

매개 변수

[in] pwszOutOfProcessCallbackDll

등록할 예외 처리기 DLL의 이름입니다.

[in, optional] pContext

처리기의 콜백 함수에 전달되는 임의의 컨텍스트 정보에 대한 포인터입니다.

반환 값

이 함수는 성공 시 S_OK 반환하거나 다음 오류 코드를 포함하여 실패 시 오류 코드를 반환합니다.

반환 코드 설명
WER_E_INVALID_STATE 프로세스 상태가 잘못되었습니다. 예를 들어 프로세스는 애플리케이션 복구 모드에 있습니다.
HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER) 등록된 런타임 예외 모듈 수가 제한을 초과합니다. 프로세스는 최대 WER_MAX_REGISTERED_RUNTIME_EXCEPTION_MODULES 처리기를 등록할 수 있습니다.

설명

예외 처리기는 크래시 또는 처리되지 않은 예외가 발생할 때 WER 서비스가 로드하는 Out-of-process DLL입니다. DLL은 다음 함수를 구현하고 내보내야 합니다.

DLL에는 DllMain 진입점도 포함되어야 합니다.

예외 처리기를 사용하면 현재 프로세스 내 이벤트 보고 기능보다 크래시 정보를 보고하는 데 더 안전하고 안정적입니다. 또한 현재 일반 이벤트 보고 기능은 치명적이 아닌 오류를 보고하는 데만 적합합니다.

이 함수를 사용하려면 pwszOutOfProcessCallbackDll DLL이 레지스트리의 WER 예외 처리기 모듈 목록에 포함되어야 합니다. 예외 처리기를 등록한 후 프로세스가 충돌하거나 처리되지 않은 예외를 발생시키는 경우 WER 서비스는 예외 처리기를 로드하고 OutOfProcessExceptionEventCallback 콜백 함수를 호출합니다. 이 함수는 크래시에 대한 클레임을 명시하고 이벤트 이름 및 보고서 매개 변수 수를 제공하는 데 사용합니다. 프로세스가 둘 이상의 예외 처리기를 등록하는 경우 처리기 중 하나가 충돌을 클레임할 때까지 서비스는 각 처리기를 호출합니다. 크래시 클레임 처리기가 없으면 WER은 기본적으로 네이티브 크래시 보고를 사용합니다.

예외 처리기가 예외를 클레임하는 경우 WER 서비스는 문제를 고유하게 정의하는 보고 매개 변수를 제공하는 OutOfProcessExceptionEventSignatureCallback 콜백 함수를 호출합니다. 그런 다음 WER 서비스는 OutOfProcessExceptionEventDebuggerLaunchCallback 콜백 을 호출하여 사용자에게 디버거를 시작하거나 디버거를 자동으로 시작하는 옵션을 제공할지 여부를 결정합니다. 처리기는 기본 문자열을 재정의하는 사용자 지정 디버거 시작 문자열을 지정할 수도 있습니다(기본값은 AeDebug 레지스트리 키에 지정된 디버거).

처리기가 이벤트 이름, 보고 매개 변수 및 디버거 시작 설정을 제공한 후 나머지 오류 보고 흐름은 일반적인 방식으로 계속됩니다.

프로세스가 종료되기 전에 등록을 제거하려면 WerUnregisterRuntimeExceptionModule 함수를 호출해야 합니다. 프로세스는 최대 WER_MAX_REGISTERED_RUNTIME_EXCEPTION_MODULES 처리기를 등록할 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 R2 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 werapi.h
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

Windows 오류 보고