SetErrorMode 함수(errhandlingapi.h)
시스템 또는 프로세스가 지정된 심각한 오류 유형을 처리하는지 여부를 제어합니다.
통사론
UINT SetErrorMode(
[in] UINT uMode
);
매개 변수
[in] uMode
프로세스 오류 모드입니다. 이 매개 변수는 다음 값 중 하나 이상일 수 있습니다.
값 | 의미 |
---|---|
|
모든 오류 대화 상자를 표시하는 시스템 기본값을 사용합니다. |
|
시스템에 심각한 오류 처리기 메시지 상자가 표시되지 않습니다. 대신 시스템은 호출 프로세스에 오류를 보냅니다.
모든 애플리케이션이 시작 시 SEM_FAILCRITICALERRORS 매개 변수를 사용하여 프로세스 전체 SetErrorMode 함수를 호출하는 것이 가장 좋습니다. 이는 오류 모드 대화 상자가 애플리케이션을 중단하지 않도록 하기 위한 것입니다. |
|
시스템은 자동으로 메모리 맞춤 오류를 수정하고 애플리케이션에 보이지 않게 만듭니다. 호출 프로세스 및 모든 하위 프로세스에 대해 이 작업을 수행합니다. 이 기능은 특정 프로세서 아키텍처에서만 지원됩니다. 자세한 내용은 설명 섹션을 참조하세요.
프로세스에 대해 이 값을 설정한 후에는 값을 지우려는 후속 시도가 무시됩니다. |
|
시스템에서 Windows 오류 보고를 호출하지 않습니다. Windows 오류 보고 UI를 사용하지 않도록 설정하려면 WER_FAULT_REPORTING_NO_UI 플래그를 사용하여 WerSetFlags를 호출합니다. |
|
OpenFile 함수는 파일을 찾지 못하면 메시지 상자를 표시하지 않습니다. 대신 오류가 호출자에게 반환됩니다. 이 오류 모드는 OF_PROMPT 플래그를 재정의합니다. |
반환 값
반환 값은 오류 모드 비트 플래그의 이전 상태입니다.
발언
각 프로세스에는 애플리케이션이 심각한 오류에 응답하는 방법을 시스템에 나타내는 연결된 오류 모드가 있습니다. 자식 프로세스는 부모 프로세스의 오류 모드를 상속합니다. 프로세스 오류 모드를 검색하려면 GetErrorMode 함수를 사용합니다.
전체 프로세스에 대해 오류 모드가 설정되므로 다중 스레드 애플리케이션이 다른 오류 모드 플래그를 설정하지 않도록 해야 합니다. 이렇게 하면 일관되지 않은 오류 처리가 발생할 수 있습니다.
시스템은 모든 프로세서 아키텍처에서 애플리케이션에 맞춤 오류를 표시하지 않습니다. 따라서 SEM_NOALIGNMENTFAULTEXCEPT 지정하는 것은 이러한 아키텍처에서 오류가 아니지만 시스템은 요청을 자동으로 무시할 수 있습니다. 즉, x86 컴퓨터에서 다음과 같은 코드 시퀀스가 항상 유효하지는 않습니다.
C++ |
---|
SetErrorMode(SEM_NOALIGNMENTFAULTEXCEPT); fuOldErrorMode = SetErrorMode(0); ASSERT(fuOldErrorMode == SEM_NOALIGNMENTFAULTEXCEPT); |
Visual Studio 2005: 정렬된 데이터가 없을 수 있는 구조체에 대한 포인터를 선언할 때 __unaligned 키워드를 사용하여 형식을 한 번에 하나씩 읽어야 함을 나타낼 수 있습니다. 자세한 내용은 Windows 데이터 맞춤
Windows 7: 호출자는 시스템의 정상적인 동작에 덜 방해가 되므로 SetErrorModeSetThreadErrorMode 선호해야 합니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | errhandlingapi.h(Windows.h 포함) |
라이브러리 | Kernel32.lib |
DLL | Kernel32.dll |
참고 항목
GetErrorMode
SetThreadErrorMode