ntoseye 0.31.0

WinDbg-like kernel debugger for Windows, from Linux and macOS
Documentation
//! Windows error names from the Windows SDK `ntstatus.h` and `winerror.h`.

const NTSTATUS_NAMES: &[(u32, &str)] = &[
    (0x0000_0000, "STATUS_SUCCESS"),
    (0x0000_0103, "STATUS_PENDING"),
    (0x4000_0000, "STATUS_OBJECT_NAME_EXISTS"),
    (0x8000_0001, "STATUS_GUARD_PAGE_VIOLATION"),
    (0x8000_0002, "STATUS_DATATYPE_MISALIGNMENT"),
    (0x8000_0003, "STATUS_BREAKPOINT"),
    (0x8000_0004, "STATUS_SINGLE_STEP"),
    (0x8000_0005, "STATUS_BUFFER_OVERFLOW"),
    (0x8000_0006, "STATUS_NO_MORE_FILES"),
    (0xC000_0001, "STATUS_UNSUCCESSFUL"),
    (0xC000_0002, "STATUS_NOT_IMPLEMENTED"),
    (0xC000_0003, "STATUS_INVALID_INFO_CLASS"),
    (0xC000_0004, "STATUS_INFO_LENGTH_MISMATCH"),
    (0xC000_0005, "STATUS_ACCESS_VIOLATION"),
    (0xC000_0006, "STATUS_IN_PAGE_ERROR"),
    (0xC000_0007, "STATUS_PAGEFILE_QUOTA"),
    (0xC000_0008, "STATUS_INVALID_HANDLE"),
    (0xC000_000D, "STATUS_INVALID_PARAMETER"),
    (0xC000_000E, "STATUS_NO_SUCH_DEVICE"),
    (0xC000_000F, "STATUS_NO_SUCH_FILE"),
    (0xC000_0010, "STATUS_INVALID_DEVICE_REQUEST"),
    (0xC000_0011, "STATUS_END_OF_FILE"),
    (0xC000_0012, "STATUS_WRONG_VOLUME"),
    (0xC000_0013, "STATUS_NO_MEDIA_IN_DEVICE"),
    (0xC000_0014, "STATUS_UNRECOGNIZED_MEDIA"),
    (0xC000_0015, "STATUS_NONEXISTENT_SECTOR"),
    (0xC000_0016, "STATUS_MORE_PROCESSING_REQUIRED"),
    (0xC000_0017, "STATUS_NO_MEMORY"),
    (0xC000_0018, "STATUS_CONFLICTING_ADDRESSES"),
    (0xC000_0019, "STATUS_NOT_MAPPED_VIEW"),
    (0xC000_001A, "STATUS_UNABLE_TO_FREE_VM"),
    (0xC000_001B, "STATUS_UNABLE_TO_DELETE_SECTION"),
    (0xC000_001C, "STATUS_INVALID_SYSTEM_SERVICE"),
    (0xC000_001D, "STATUS_ILLEGAL_INSTRUCTION"),
    (0xC000_001E, "STATUS_INVALID_LOCK_SEQUENCE"),
    (0xC000_0021, "STATUS_ALREADY_COMMITTED"),
    (0xC000_0022, "STATUS_ACCESS_DENIED"),
    (0xC000_0023, "STATUS_BUFFER_TOO_SMALL"),
    (0xC000_0024, "STATUS_OBJECT_TYPE_MISMATCH"),
    (0xC000_0025, "STATUS_NONCONTINUABLE_EXCEPTION"),
    (0xC000_0026, "STATUS_INVALID_DISPOSITION"),
    (0xC000_0027, "STATUS_UNWIND"),
    (0xC000_0028, "STATUS_BAD_STACK"),
    (0xC000_0029, "STATUS_INVALID_UNWIND_TARGET"),
    (0xC000_0030, "STATUS_INVALID_PARAMETER_MIX"),
    (0xC000_0034, "STATUS_OBJECT_NAME_NOT_FOUND"),
    (0xC000_0035, "STATUS_OBJECT_NAME_COLLISION"),
    (0xC000_0039, "STATUS_OBJECT_PATH_INVALID"),
    (0xC000_003A, "STATUS_OBJECT_PATH_NOT_FOUND"),
    (0xC000_003B, "STATUS_OBJECT_PATH_SYNTAX_BAD"),
    (0xC000_003C, "STATUS_DATA_OVERRUN"),
    (0xC000_003D, "STATUS_DATA_LATE_ERROR"),
    (0xC000_003E, "STATUS_DATA_ERROR"),
    (0xC000_003F, "STATUS_CRC_ERROR"),
    (0xC000_0043, "STATUS_SHARING_VIOLATION"),
    (0xC000_0044, "STATUS_QUOTA_EXCEEDED"),
    (0xC000_0045, "STATUS_INVALID_PAGE_PROTECTION"),
    (0xC000_0046, "STATUS_MUTANT_NOT_OWNED"),
    (0xC000_0047, "STATUS_SEMAPHORE_LIMIT_EXCEEDED"),
    (0xC000_004B, "STATUS_THREAD_IS_TERMINATING"),
    (0xC000_0056, "STATUS_DELETE_PENDING"),
    (0xC000_0057, "STATUS_CTL_FILE_NOT_SUPPORTED"),
    (0xC000_0058, "STATUS_UNKNOWN_REVISION"),
    (0xC000_0059, "STATUS_REVISION_MISMATCH"),
    (0xC000_005A, "STATUS_INVALID_OWNER"),
    (0xC000_005C, "STATUS_NO_IMPERSONATION_TOKEN"),
    (0xC000_005E, "STATUS_NO_LOGON_SERVERS"),
    (0xC000_005F, "STATUS_NO_SUCH_LOGON_SESSION"),
    (0xC000_0060, "STATUS_NO_SUCH_PRIVILEGE"),
    (0xC000_0061, "STATUS_PRIVILEGE_NOT_HELD"),
    (0xC000_0064, "STATUS_NO_SUCH_USER"),
    (0xC000_006A, "STATUS_WRONG_PASSWORD"),
    (0xC000_006D, "STATUS_LOGON_FAILURE"),
    (0xC000_006E, "STATUS_ACCOUNT_RESTRICTION"),
    (0xC000_006F, "STATUS_INVALID_LOGON_HOURS"),
    (0xC000_0070, "STATUS_INVALID_WORKSTATION"),
    (0xC000_0071, "STATUS_PASSWORD_EXPIRED"),
    (0xC000_0072, "STATUS_ACCOUNT_DISABLED"),
    (0xC000_0073, "STATUS_NONE_MAPPED"),
    (0xC000_007A, "STATUS_PROCEDURE_NOT_FOUND"),
    (0xC000_007B, "STATUS_INVALID_IMAGE_FORMAT"),
    (0xC000_007C, "STATUS_NO_TOKEN"),
    (0xC000_007D, "STATUS_BAD_INHERITANCE_ACL"),
    (0xC000_007F, "STATUS_DISK_FULL"),
    (0xC000_0080, "STATUS_SERVER_DISABLED"),
    (0xC000_0081, "STATUS_SERVER_NOT_DISABLED"),
    (0xC000_008D, "STATUS_FLOAT_DENORMAL_OPERAND"),
    (0xC000_008E, "STATUS_FLOAT_DIVIDE_BY_ZERO"),
    (0xC000_008F, "STATUS_FLOAT_INEXACT_RESULT"),
    (0xC000_0090, "STATUS_FLOAT_INVALID_OPERATION"),
    (0xC000_0091, "STATUS_FLOAT_OVERFLOW"),
    (0xC000_0092, "STATUS_FLOAT_STACK_CHECK"),
    (0xC000_0093, "STATUS_FLOAT_UNDERFLOW"),
    (0xC000_0094, "STATUS_INTEGER_DIVIDE_BY_ZERO"),
    (0xC000_0095, "STATUS_INTEGER_OVERFLOW"),
    (0xC000_0096, "STATUS_PRIVILEGED_INSTRUCTION"),
    (0xC000_009A, "STATUS_INSUFFICIENT_RESOURCES"),
    (0xC000_009C, "STATUS_DEVICE_DATA_ERROR"),
    (0xC000_009D, "STATUS_DEVICE_NOT_CONNECTED"),
    (0xC000_009E, "STATUS_DEVICE_POWER_FAILURE"),
    (0xC000_00A4, "STATUS_INVALID_GROUP_ATTRIBUTES"),
    (0xC000_00A5, "STATUS_BAD_IMPERSONATION_LEVEL"),
    (0xC000_00A6, "STATUS_CANT_OPEN_ANONYMOUS"),
    (0xC000_00B5, "STATUS_IO_TIMEOUT"),
    (0xC000_00BA, "STATUS_FILE_IS_A_DIRECTORY"),
    (0xC000_00BF, "STATUS_NETWORK_BUSY"),
    (0xC000_00C0, "STATUS_DEVICE_DOES_NOT_EXIST"),
    (0xC000_00C3, "STATUS_INVALID_NETWORK_RESPONSE"),
    (0xC000_00C4, "STATUS_UNEXPECTED_NETWORK_ERROR"),
    (0xC000_00C6, "STATUS_PRINT_QUEUE_FULL"),
    (0xC000_00C7, "STATUS_NO_SPOOL_SPACE"),
    (0xC000_00C9, "STATUS_NETWORK_NAME_DELETED"),
    (0xC000_00CA, "STATUS_NETWORK_ACCESS_DENIED"),
    (0xC000_00D9, "STATUS_PIPE_EMPTY"),
    (0xC000_00E5, "STATUS_INTERNAL_ERROR"),
    (0xC000_00FD, "STATUS_STACK_OVERFLOW"),
    (0xC000_0135, "STATUS_DLL_NOT_FOUND"),
    (0xC000_0139, "STATUS_ENTRYPOINT_NOT_FOUND"),
    (0xC000_0142, "STATUS_DLL_INIT_FAILED"),
    (0xC000_0185, "STATUS_IO_DEVICE_ERROR"),
    (0xC000_0188, "STATUS_LOG_FILE_FULL"),
    (0xC000_018A, "STATUS_NO_TRUST_LSA_SECRET"),
    (0xC000_018D, "STATUS_TRUSTED_RELATIONSHIP_FAILURE"),
    (0xC000_0193, "STATUS_ACCOUNT_EXPIRED"),
    (0xC000_0194, "STATUS_POSSIBLE_DEADLOCK"),
    (0xC000_0234, "STATUS_ACCOUNT_LOCKED_OUT"),
    (0xC000_0236, "STATUS_CONNECTION_REFUSED"),
    (0xC000_0237, "STATUS_GRACEFUL_DISCONNECT"),
    (0xC000_023C, "STATUS_NETWORK_UNREACHABLE"),
    (0xC000_0244, "STATUS_AUDIT_FAILED"),
    (0xC000_021A, "STATUS_SYSTEM_PROCESS_TERMINATED"),
    (0xC000_0221, "STATUS_IMAGE_CHECKSUM_MISMATCH"),
    (0xC000_0409, "STATUS_STACK_BUFFER_OVERRUN"),
    (0xC000_0428, "STATUS_INVALID_IMAGE_HASH"),
    (0xC000_0602, "STATUS_FAIL_FAST_EXCEPTION"),
    (0xC000_0906, "STATUS_VIRUS_INFECTED"),
];

const WIN32_NAMES: &[(u32, &str)] = &[
    (0, "ERROR_SUCCESS"),
    (1, "ERROR_INVALID_FUNCTION"),
    (2, "ERROR_FILE_NOT_FOUND"),
    (3, "ERROR_PATH_NOT_FOUND"),
    (4, "ERROR_TOO_MANY_OPEN_FILES"),
    (5, "ERROR_ACCESS_DENIED"),
    (6, "ERROR_INVALID_HANDLE"),
    (8, "ERROR_NOT_ENOUGH_MEMORY"),
    (9, "ERROR_INVALID_BLOCK"),
    (11, "ERROR_BAD_FORMAT"),
    (12, "ERROR_INVALID_ACCESS"),
    (13, "ERROR_INVALID_DATA"),
    (14, "ERROR_OUTOFMEMORY"),
    (15, "ERROR_INVALID_DRIVE"),
    (16, "ERROR_CURRENT_DIRECTORY"),
    (17, "ERROR_NOT_SAME_DEVICE"),
    (18, "ERROR_NO_MORE_FILES"),
    (19, "ERROR_WRITE_PROTECT"),
    (20, "ERROR_BAD_UNIT"),
    (21, "ERROR_NOT_READY"),
    (22, "ERROR_BAD_COMMAND"),
    (23, "ERROR_CRC"),
    (24, "ERROR_BAD_LENGTH"),
    (25, "ERROR_SEEK"),
    (26, "ERROR_NOT_DOS_DISK"),
    (27, "ERROR_SECTOR_NOT_FOUND"),
    (28, "ERROR_OUT_OF_PAPER"),
    (29, "ERROR_WRITE_FAULT"),
    (30, "ERROR_READ_FAULT"),
    (31, "ERROR_GEN_FAILURE"),
    (32, "ERROR_SHARING_VIOLATION"),
    (33, "ERROR_LOCK_VIOLATION"),
    (34, "ERROR_WRONG_DISK"),
    (36, "ERROR_SHARING_BUFFER_EXCEEDED"),
    (38, "ERROR_HANDLE_EOF"),
    (39, "ERROR_HANDLE_DISK_FULL"),
    (50, "ERROR_NOT_SUPPORTED"),
    (51, "ERROR_REM_NOT_LIST"),
    (52, "ERROR_DUP_NAME"),
    (53, "ERROR_BAD_NETPATH"),
    (54, "ERROR_NETWORK_BUSY"),
    (55, "ERROR_DEV_NOT_EXIST"),
    (56, "ERROR_TOO_MANY_CMDS"),
    (57, "ERROR_ADAP_HDW_ERR"),
    (58, "ERROR_BAD_NET_RESP"),
    (59, "ERROR_UNEXP_NET_ERR"),
    (60, "ERROR_BAD_REM_ADAP"),
    (61, "ERROR_PRINTQ_FULL"),
    (62, "ERROR_NO_SPOOL_SPACE"),
    (63, "ERROR_PRINT_CANCELLED"),
    (64, "ERROR_NETNAME_DELETED"),
    (65, "ERROR_NETWORK_ACCESS_DENIED"),
    (66, "ERROR_BAD_DEV_TYPE"),
    (67, "ERROR_BAD_NET_NAME"),
    (68, "ERROR_TOO_MANY_NAMES"),
    (69, "ERROR_TOO_MANY_SESS"),
    (70, "ERROR_SHARING_PAUSED"),
    (71, "ERROR_REQ_NOT_ACCEP"),
    (72, "ERROR_REDIR_PAUSED"),
    (80, "ERROR_FILE_EXISTS"),
    (82, "ERROR_CANNOT_MAKE"),
    (85, "ERROR_ALREADY_ASSIGNED"),
    (87, "ERROR_INVALID_PARAMETER"),
    (109, "ERROR_BROKEN_PIPE"),
    (110, "ERROR_OPEN_FAILED"),
    (111, "ERROR_BUFFER_OVERFLOW"),
    (112, "ERROR_DISK_FULL"),
    (122, "ERROR_INSUFFICIENT_BUFFER"),
    (123, "ERROR_INVALID_NAME"),
    (126, "ERROR_MOD_NOT_FOUND"),
    (127, "ERROR_PROC_NOT_FOUND"),
    (170, "ERROR_BUSY"),
    (183, "ERROR_ALREADY_EXISTS"),
    (191, "ERROR_INVALID_EXE_SIGNATURE"),
    (193, "ERROR_BAD_EXE_FORMAT"),
    (206, "ERROR_FILENAME_EXCED_RANGE"),
    (231, "ERROR_PIPE_BUSY"),
    (232, "ERROR_NO_DATA"),
    (233, "ERROR_PIPE_NOT_CONNECTED"),
    (234, "ERROR_MORE_DATA"),
    (258, "WAIT_TIMEOUT"),
    (267, "ERROR_DIRECTORY"),
    (487, "ERROR_INVALID_ADDRESS"),
    (534, "ERROR_ARITHMETIC_OVERFLOW"),
    (740, "ERROR_ELEVATION_REQUIRED"),
    (995, "ERROR_OPERATION_ABORTED"),
    (996, "ERROR_IO_INCOMPLETE"),
    (997, "ERROR_IO_PENDING"),
    (998, "ERROR_NOACCESS"),
    (1001, "ERROR_STACK_OVERFLOW"),
    (1004, "ERROR_INVALID_FLAGS"),
    (1006, "ERROR_FILE_INVALID"),
    (1008, "ERROR_NO_TOKEN"),
    (1053, "ERROR_SERVICE_REQUEST_TIMEOUT"),
    (1062, "ERROR_SERVICE_NOT_ACTIVE"),
    (1114, "ERROR_DLL_INIT_FAILED"),
    (1115, "ERROR_SHUTDOWN_IN_PROGRESS"),
    (1168, "ERROR_NOT_FOUND"),
    (1223, "ERROR_CANCELLED"),
    (1236, "ERROR_CONNECTION_ABORTED"),
    (1237, "ERROR_RETRY"),
    (1244, "ERROR_NOT_AUTHENTICATED"),
    (1314, "ERROR_PRIVILEGE_NOT_HELD"),
    (1319, "ERROR_NO_SUCH_GROUP"),
    (1321, "ERROR_MEMBER_NOT_IN_GROUP"),
    (1326, "ERROR_LOGON_FAILURE"),
    (1327, "ERROR_ACCOUNT_RESTRICTION"),
    (1328, "ERROR_INVALID_LOGON_HOURS"),
    (1330, "ERROR_PASSWORD_EXPIRED"),
    (1331, "ERROR_ACCOUNT_DISABLED"),
    (1332, "ERROR_NONE_MAPPED"),
    (1376, "ERROR_NO_SUCH_ALIAS"),
    (1387, "ERROR_NO_SUCH_MEMBER"),
    (1392, "ERROR_FILE_CORRUPT"),
    (1450, "ERROR_NO_SYSTEM_RESOURCES"),
    (1455, "ERROR_COMMITMENT_LIMIT"),
    (1460, "ERROR_TIMEOUT"),
    (1790, "ERROR_TRUST_FAILURE"),
    (1816, "ERROR_NOT_ENOUGH_QUOTA"),
    (2202, "ERROR_BAD_USERNAME"),
    (5007, "ERROR_RESOURCE_NOT_FOUND"),
    (5023, "ERROR_INVALID_STATE"),
];

pub fn ntstatus_name(code: u32) -> Option<&'static str> {
    NTSTATUS_NAMES
        .iter()
        .find(|(value, _)| *value == code)
        .map(|(_, name)| *name)
}

pub fn win32_error_name(code: u32) -> Option<&'static str> {
    WIN32_NAMES
        .iter()
        .find(|(value, _)| *value == code)
        .map(|(_, name)| *name)
}