驅動程式可以定義自定義IO_ERR_XXX 常數,以在記錄錯誤時當做 ErrorCode 值使用。 一起撰寫的驅動程式組也可以定義IRP_MJ_INTERNAL_DEVICE_CONTROL要求的自定義STATUS_XXX 值。
下圖顯示32位NTSTATUS值中的位欄位。
上圖中顯示的 Sev 字段表示嚴重性程式代碼,這必須是下列系統定義的值之一:
狀態_嚴重性_成功
表示成功的 NTSTATUS 值,例如 STATUS_SUCCESS,或錯誤日誌封包中 IO_ERR_RETRY_SUCCEEDED 的值。
狀態_嚴重程度_資訊性
表示資訊性NTSTATUS值,例如STATUS_SERIAL_MORE_WRITES。
狀態_嚴重性_警告
表示警告 NTSTATUS 值,例如 STATUS_DEVICE_PAPER_EMPTY。
狀態_嚴重性_錯誤
指出錯誤 NTSTATUS 值,例如 FinalStatus 值的STATUS_INSUFFICIENT_RESOURCES,或錯誤記錄封包中 ErrorCode 值的IO_ERR_CONFIGURATION_ERROR。
大部分的公用IO_ERR_XXX 常數都屬於STATUS_SEVERITY_ERROR類別。
Facility 程式代碼會指定產生錯誤的設施。 針對新的 IO_ERR_XXX 值,驅動程式會指定 Facility 的FACILITY_IO_ERROR_CODE值。 針對自定義的 STATUS_XXX 值,類別 的不同值意義由驅動程序自行定義。
C 位會指定值是否為客戶定義或Microsoft定義。 位會針對客戶定義值進行設定,並清除Microsoft定義的值。
驅動程式可以定義新的IO_ERR_XXX 值,以識別系統事件記錄檔中的自定義錯誤訊息。 如需如何定義 NTSTATUS 值及其識別的錯誤訊息的描述,請參閱 定義自定義錯誤類型。
成對的驅動程式可以定義驅動程式特定的STATUS_XXX 值,以將私下定義 IRP_MJ_INTERNAL_DEVICE_CONTROL 要求的相關信息傳達給配對的較高驅動程式。
如果在完成 IRP 時,可能會調用現有較高層級驅動程式的 IoCompletion 例程,則類別驅動程式必須將任何私用 STATUS_XXX 值對應至系統定義的 NTSTATUS 值。
針對成對的顯示和視訊迷你埠驅動程序,視訊埠驅動程式會將公用 STATUS_XXX 值與視訊迷你埠驅動程式所傳回的 Win32 定義的常量之間進行對應。 如需詳細資訊,請參閱 Windows 2000 顯示驅動程式模型中的視訊迷你埠驅動程式。
驅動程式無法針對可在使用者模式中接收的 IRP 使用自定義 NTSTATUS 值,因為只有系統定義的值可以轉譯成 Win32 錯誤碼。