Windows 운영체제는 다양한 종류의 에러 코드를 사용하여 시스템과 애플리케이션에서 발생하는 문제를 진단하고 해결할 수 있도록 돕습니다. 에러 코드는 Windows 운영체제의 여러 헤더 파일에 정의되어 있으며, 커널, 유저 모드, 드라이버 등에 따라 다른 종류의 코드를 사용합니다. 이번 글에서는 Windows 운영체제와 프로그래밍에서 사용되는 이러한 에러 코드를 종류별로 모두 정리해보겠습니다.
0. Error Code Full List
- 1. Win32 Error / System Error Codes (WinError.h)
- 2. NTSTATUS Error Codes
- 3. HRESULT Error Codes
- 4. Bug Checks Error Codes (BSOD Error Codes)
- 5. Windows Error Codes: Device Manager Error Codes
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는 아래 블로그 글에 정리하였습니다.
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는 아래 블로그 글에 정리하였습니다.
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는 아래 블로그 글에 정리하였습니다.
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는 아래 블로그 글에 정리하였습니다.
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 Internals' 카테고리의 다른 글
Windows Error Codes 5: Device Manager Error Codes (0) | 2024.05.17 |
---|---|
Windows Error Codes 2: NTSTATUS Error Codes (0) | 2024.05.16 |
Windows Error Codes 1: Win32 Error / GetLastError Codes (WinError.h) (0) | 2024.05.15 |
Windows 운영체제 version 및 버전 체크하는 방법 및 API (0) | 2024.05.15 |
Windows 운영체제 version 및 버전 별 역사에 대해 (0) | 2024.05.15 |