다음을 통해 공유


새 NTSTATUS 값 정의

드라이버는 오류를 로깅할 때 ErrorCode 값으로 사용할 사용자 지정 IO_ERR_XXX 상수를 정의할 수 있습니다. 함께 작성된 드라이버 쌍은 IRP_MJ_INTERNAL_DEVICE_CONTROL 요청에 대한 사용자 지정 STATUS_XXX 값을 정의할 수도 있습니다.

다음 다이어그램은 32비트 NTSTATUS 값의 비트 필드를 보여줍니다.

ntstatus 값의 비트 필드를 보여 주는 다이어그램

앞의 다이어그램에 표시된 Sev 필드는 다음 시스템 정의 값 중 하나여야 하는 심각도 코드를 나타냅니다.

STATUS_SEVERITY_SUCCESS
STATUS_SUCCESS 같은 성공적인 NTSTATUS 값 또는 오류 로그 패킷에 IO_ERR_RETRY_SUCCEEDED 값을 나타냅니다.

STATUS_SEVERITY_INFORMATIONAL
STATUS_SERIAL_MORE_WRITES 같은 정보 NTSTATUS 값을 나타냅니다.

STATUS_SEVERITY_WARNING
STATUS_DEVICE_PAPER_EMPTY 같은 경고 NTSTATUS 값을 나타냅니다.

STATUS_SEVERITY_ERROR
오류 로그 패킷의 ErrorCode 값에 대한 IO_ERR_CONFIGURATION_ERROR 또는 FinalStatus 값의 STATUS_INSUFFICIENT_RESOURCES 같은 오류 NTSTATUS 값을 나타냅니다.

대부분의 공용 IO_ERR_XXX 상수는 STATUS_SEVERITY_ERROR 범주에 속합니다.

시설 코드는 오류를 생성한 시설을 지정합니다. 새 IO_ERR_XXX 값의 경우 드라이버는 Facility에 대한 FACILITY_IO_ERROR_CODE 값을 지정합니다. 사용자 지정 STATUS_XXX 값의 경우 Facility 에 대한 다양한 값의 의미는 드라이버 정의입니다.

C 비트는 값이 고객 정의 또는 Microsoft 정의인지를 지정합니다. 비트는 고객 정의 값에 대해 설정되고 Microsoft에서 정의한 값에 대해 지워집니다.

드라이버는 새 IO_ERR_XXX 값을 정의하여 시스템 이벤트 로그에서 사용자 지정 오류 메시지를 식별할 수 있습니다. NTSTATUS 값 및 해당 값이 식별하는 오류 메시지를 정의하는 방법에 대한 설명은 사용자 지정 오류 유형 정의를 참조하세요.

드라이버 쌍은 드라이버별 STATUS_XXX 값을 정의하여 쌍의 하위 드라이버에서 상위 드라이버로 비공개로 정의된 IRP_MJ_INTERNAL_DEVICE_CONTROL 요청에 대한 정보를 전달할 수 있습니다.

클래스 드라이버는 해당 IRP에 대해 기존 상위 수준 드라이버의 IoCompletion 루틴을 호출할 수 있는 경우 IRP를 완료할 때 모든 프라이빗 STATUS_XXX 값을 시스템 정의 NTSTATUS 값에 매핑해야 합니다.

쌍을 이루는 디스플레이 및 비디오 미니포트 드라이버의 경우 비디오 포트 드라이버는 공용 STATUS_XXX 값과 비디오 미니포트 드라이버에서 반환하는 Win32 정의 상수 간의 매핑을 수행합니다. 자세한 내용은 Windows 2000 디스플레이 드라이버 모델의 비디오 미니포트 드라이버를 참조하세요.

시스템 정의 값만 Win32 오류 코드로 변환할 수 있으므로 드라이버는 사용자 모드에서 수신할 수 있는 IRP에 대해 사용자 지정 NTSTATUS 값을 사용할 수 없습니다.