본문 바로가기
Windows Internals

Windows Error Codes 총정리: GetLastError Win32, NTSTATUS, HRESULT, Bug Checks Error Codes

by oobw 2024. 5. 15.

 

Windows 운영체제는 다양한 종류의 에러 코드를 사용하여 시스템과 애플리케이션에서 발생하는 문제를 진단하고 해결할 수 있도록 돕습니다. 에러 코드는 Windows 운영체제의 여러 헤더 파일에 정의되어 있으며, 커널, 유저 모드, 드라이버 등에 따라 다른 종류의 코드를 사용합니다. 이번 글에서는 Windows 운영체제와 프로그래밍에서 사용되는 이러한 에러 코드를 종류별로 모두 정리해보겠습니다.

0. Error Code Full List

 

1. GetLastError Codes / Win32 Error Codes (WinError.h)

가장 범용적인 에러 코드로 WinError.h에 정의되어 있고, Win32 API 사용 중에 발생하는 Application 에서의 에러부터 운영체제의 user-mode 및 kernel-mode에서 발생하는 다양한 시스템 레벨의 오류들을 커버합니다.

  • 목적: Win32 오류 및 운영체제 핵심 기능에서 발생하는 에러 표현
  • 일반 사용: File system errors, access violations, network errors 등
  • 예시: ERROR_SUCCESS (code 0), ERROR_FILE_NOT_FOUND (code 2), ERROR_ACCESS_DENIED (code 5)

1. 1. System Error Codes and Win32 Error Codes Full List

Win32 Error Code의 Full List는 아래 블로그 글에 정리하였습니다.

 

Windows Error Codes: Win32 Error / System Error Codes (WinError.h)

이번 글에서는 윈도우 프로그래밍에서 가장 광범위하게 사용되는 시스템 에러 코드 또는 Win32 에러 코드에 대해 리스트업합니다. 관련 글 Win32 Error Codes (System Error Codes) Full ListReference: Microsoft L

oobwrite.com

 

 

 

2. NTSTATUS Error Codes

NTSTATUS 코드는 Windows 커널과 드라이버 개발에서 사용되며, 커널 모드 작업의 성공 또는 실패를 나타냅니다.

  • 목적: Windows 커널의 low-level 작업에서 발생하는 오류에 대한 자세한 정보를 제공
  • 일반 사용: 드라이버, 커널 모드 구성 요소, 시스템 호출.
  • 예시: STATUS_SUCCESS (0x00000000), STATUS_ACCESS_DENIED (0xC0000022)

2. 1. NTSTATUS Error Codes Full List

NTSTATUS Error Code의 Full List는 아래 블로그 글에 정리하였습니다.

 

Windows Error Codes: NTSTATUS Error Codes

이번 글에서는 Windows 커널과 드라이버 개발에서 사용되며, 커널 모드 작업의 성공과 실패를 알려주는 NTSTATUS 에러 코드에 대해서 리스트업 합니다. 다른 에러 코드는 관련 블로그 글을 참조하세

oobwrite.com

 

 

3. HRESULT Error Codes

HRESULT 코드는 COM (Component Object Model) 프로그래밍에 사용되고, COM operations의 실패와 성공을 나타냅니다.

  • 목적: COM operations에 대한 성공, 실패 및 상세 정보를 표현
  • 일반 사용: COM interfaces, Windows API calls, DirectX
  • 예시: S_OK (success), E_FAIL (unspecified failure)

3.1. HRESULT 코드 구조

HRESULT 코드는 네 부분으로 나뉩니다.

  • 결과 코드: 작업의 성공 여부를 나타냅니다. 0이 성공을 의미하고, 1은 실패를 의미합니다.
  • Facility 코드: 오류의 출처를 나타냅니다.
  • 세부 오류 코드: 구체적인 오류 정보를 제공합니다.
  • Reserve 코드: 미래 사용을 위해 예약된 비트입니다.

3.2. HRESULT Error Codes Full List

HRESULT Error Code의 Full List는 아래 블로그 글에 정리하였습니다.

 

Windows Error Codes: HRESULT Error Codes

이번 글에서는 COM (Component Object Model) 프로그래밍에 사용되고, COM operations의 실패와 성공을 나타내는 데 사용하는 HRESULT 에러 코드에  대해서 리스트업 합니다. 다른 에러 코드는 관련 블로그 글

oobwrite.com

 

 

4. Bug Checks Error Codes

Windows 운영체제를 사용하다 보면, 시스템이 예기치 않게 중지되거나 "블루 스크린"으로 알려진 화면을 마주할 수 있습니다. 이는 치명적인 시스템 오류로 인해 발생하며, 이러한 오류는 Bug Check Code 또는 Stop Code로 불립니다. Bug Check Code는 시스템이 더 이상 정상적으로 운영될 수 없는 심각한 오류를 만나 시스템을 중지할 때 생성되는 코드입니다. 이 코드는 시스템 충돌의 원인을 파악하는 데 중요한 정보를 제공합니다.

  • 목적: 치명적인 시스템 오류를 진단하고 문제를 해결합니다.
  • 일반 사용: 시스템 Crash, 하드웨어 오류, 드라이버 문제
  • 예시: KMODE_EXCEPTION_NOT_HANDLED (0x0000001E), IRQL_NOT_LESS_OR_EQUAL (0x0000000A)

4. 1. Bug Checks Error Codes Full List

Bug Checkes Error Code의 Full List는 아래 블로그 글에 정리하였습니다.

 

Windows Error Codes: Bug Checks Error Codes (BSOD Error Codes)

Bug Check Code는 시스템이 더 이상 정상적으로 운영될 수 없는 심각한 오류를 만나 시스템을 중지할 때 생성되는 코드입니다.  이 코드는 시스템 충돌의 원인을 파악하는 데 중요한 정보를 제공합

oobwrite.com

 

 

5. Device Manager Error Codes

디바이스 관리자 오류 코드는 하드웨어 장치와 관련된 문제를 나타냅니다.

  • 목적: 하드웨어 장치와 관련된 구체적인 오류 정보를 제공합니다.
  • 일반 사용: 하드웨어 호환성 문제, 드라이버 문제
  • 예시: Code 10 (장치를 시작할 수 없음), Code 43 (Windows가 이 장치를 중지)

5. 1. Device Manager Error Codes Full List

Bug Checkes Error Code의 Full List는 아래 블로그 글에 정리하였습니다.

 

Windows Error Codes: Device Manager Error Codes

Windows 운영 체제에서 디바이스 관리자(Device Manager)는 하드웨어 장치와 관련된 문제를 진단하고 해결하는 데 매우 유용한 도구입니다. 디바이스 관리자는 문제가 있는 장치를 노란색 느낌표 (!)로

oobwrite.com