Both the ErrorCode and FinalStatus members of the error log packet are of type NTSTATUS. Figure 16.5 shows the layout for NTSTATUS values.
Figure 16.5 NTSTATUS layout
NT drivers must set an NTSTATUS-type IO_ERR_XXX value for ErrorCode and a STATUS_XXX value for FinalStatus in each error log packet.
IO_ERR_RETRY_SUCCEEDED IO_ERR_INSUFFICIENT_RESOURCES IO_ERR_CONFIGURATION_ERROR IO_ERR_INCORRECT_IRQL IO_ERR_INVALID_IOBASE IO_ERR_DRIVER_ERROR IO_ERR_PARITY : : IO_ERR_OVERRUN_ERROR IO_ERR_TIMEOUT IO_ERR_CONTROLLER_ERROR IO_ERR_INTERNAL_ERROR
STATUS_SUCCESS STATUS_DEVICE_CONFIGURATION_ERROR STATUS_DRIVER_INTERNAL_ERROR STATUS_INVALID_DEVICE_STATE STATUS_IO_DEVICE_ERROR : : STATUS_DEVICE_BUSY STATUS_DEVICE_DOES_NOT_EXIST STATUS_ADAPTER_HARDWARE_ERROR
Public IO_ERR_XXX and STATUS_XXX constants are system resources, and each such STATUS_XXX is mapped to a corresponding Win32 constant by the system. Because they are built into Windows NT, public IO_ERR_XXX and STATUS_XXX constants can be added to the system only with the cooperation of Microsoft Corporation.