From 9ea1134eea7a0834a4efeafa380d1ed03eb271db Mon Sep 17 00:00:00 2001 From: Mark Harmstone Date: Thu, 25 Mar 2021 01:56:21 +0000 Subject: [PATCH] ntdll: Add error mapping for MUI statuses. Signed-off-by: Mark Harmstone Signed-off-by: Alexandre Julliard --- dlls/ntdll/error.c | 18 +++++++++++++----- dlls/ntdll/make_errors | 7 +++++++ dlls/ntdll/tests/error.c | 7 +++++++ 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/dlls/ntdll/error.c b/dlls/ntdll/error.c index fb630fa9864..738f55b42dc 100644 --- a/dlls/ntdll/error.c +++ b/dlls/ntdll/error.c @@ -143,7 +143,7 @@ void WINAPI RtlSetLastWin32ErrorAndNtStatusFromNtStatus( NTSTATUS status ) /* conversion table, generated by ./make_errors */ -static const DWORD error_map[1579] = +static const DWORD error_map[1586] = { ERROR_WAIT_1, /* 00000001 (STATUS_WAIT_1) */ ERROR_WAIT_2, /* 00000002 (STATUS_WAIT_2) */ @@ -1544,6 +1544,13 @@ static const DWORD error_map[1579] = ERROR_CTX_SECURITY_LAYER_ERROR, /* c00a0038 (STATUS_CTX_SECURITY_LAYER_ERROR) */ ERROR_TS_INCOMPATIBLE_SESSIONS, /* c00a0039 (STATUS_TS_INCOMPATIBLE_SESSIONS) */ ERROR_TS_VIDEO_SUBSYSTEM_ERROR, /* c00a003a (STATUS_TS_VIDEO_SUBSYSTEM_ERROR) */ + ERROR_MUI_FILE_NOT_FOUND, /* c00b0001 (STATUS_MUI_FILE_NOT_FOUND) */ + ERROR_MUI_INVALID_FILE, /* c00b0002 (STATUS_MUI_INVALID_FILE) */ + ERROR_MUI_INVALID_RC_CONFIG, /* c00b0003 (STATUS_MUI_INVALID_RC_CONFIG) */ + ERROR_MUI_INVALID_LOCALE_NAME, /* c00b0004 (STATUS_MUI_INVALID_LOCALE_NAME) */ + ERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME, /* c00b0005 (STATUS_MUI_INVALID_ULTIMATEFALLBACK_NAME) */ + ERROR_MUI_FILE_NOT_LOADED, /* c00b0006 (STATUS_MUI_FILE_NOT_LOADED) */ + ERROR_RESOURCE_ENUM_USER_STOP, /* c00b0007 (STATUS_RESOURCE_ENUM_USER_STOP) */ ERROR_CLUSTER_INVALID_NODE, /* c0130001 (STATUS_CLUSTER_INVALID_NODE) */ ERROR_CLUSTER_NODE_EXISTS, /* c0130002 (STATUS_CLUSTER_NODE_EXISTS) */ ERROR_CLUSTER_JOIN_IN_PROGRESS, /* c0130003 (STATUS_CLUSTER_JOIN_IN_PROGRESS) */ @@ -1726,7 +1733,7 @@ static const DWORD error_map[1579] = ERROR_VOLMGR_RAID5_NOT_SUPPORTED, /* c038005c (STATUS_VOLMGR_RAID5_NOT_SUPPORTED) */ }; -static const struct { ULONG start, end, offset; } table[42] = +static const struct { ULONG start, end, offset; } table[43] = { { 0x00000001, 0x00000003, 0 }, { 0x0000003f, 0x0000003f, 3 }, @@ -1767,9 +1774,10 @@ static const struct { ULONG start, end, offset; } table[42] = { 0xc0030059, 0xc0030061, 1341 }, { 0xc00a0001, 0xc00a0018, 1350 }, { 0xc00a0022, 0xc00a003a, 1374 }, - { 0xc0130001, 0xc0130031, 1399 }, - { 0xc0150001, 0xc0150027, 1448 }, - { 0xc0380001, 0xc038005c, 1487 }, + { 0xc00b0001, 0xc00b0007, 1399 }, + { 0xc0130001, 0xc0130031, 1406 }, + { 0xc0150001, 0xc0150027, 1455 }, + { 0xc0380001, 0xc038005c, 1494 }, }; static ULONG map_status( NTSTATUS status ) diff --git a/dlls/ntdll/make_errors b/dlls/ntdll/make_errors index bedce57fe7a..5b7885e0427 100755 --- a/dlls/ntdll/make_errors +++ b/dlls/ntdll/make_errors @@ -1314,6 +1314,13 @@ my %error_map = qw( STATUS_CTX_SECURITY_LAYER_ERROR ERROR_CTX_SECURITY_LAYER_ERROR STATUS_TS_INCOMPATIBLE_SESSIONS ERROR_TS_INCOMPATIBLE_SESSIONS STATUS_TS_VIDEO_SUBSYSTEM_ERROR ERROR_TS_VIDEO_SUBSYSTEM_ERROR + STATUS_MUI_FILE_NOT_FOUND ERROR_MUI_FILE_NOT_FOUND + STATUS_MUI_INVALID_FILE ERROR_MUI_INVALID_FILE + STATUS_MUI_INVALID_RC_CONFIG ERROR_MUI_INVALID_RC_CONFIG + STATUS_MUI_INVALID_LOCALE_NAME ERROR_MUI_INVALID_LOCALE_NAME + STATUS_MUI_INVALID_ULTIMATEFALLBACK_NAME ERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME + STATUS_MUI_FILE_NOT_LOADED ERROR_MUI_FILE_NOT_LOADED + STATUS_RESOURCE_ENUM_USER_STOP ERROR_RESOURCE_ENUM_USER_STOP STATUS_CLUSTER_INVALID_NODE ERROR_CLUSTER_INVALID_NODE STATUS_CLUSTER_NODE_EXISTS ERROR_CLUSTER_NODE_EXISTS STATUS_CLUSTER_JOIN_IN_PROGRESS ERROR_CLUSTER_JOIN_IN_PROGRESS diff --git a/dlls/ntdll/tests/error.c b/dlls/ntdll/tests/error.c index 05ba22223e3..c812aa779cc 100644 --- a/dlls/ntdll/tests/error.c +++ b/dlls/ntdll/tests/error.c @@ -1455,6 +1455,13 @@ static void run_error_tests(void) cmp2(STATUS_CTX_SECURITY_LAYER_ERROR, ERROR_CTX_SECURITY_LAYER_ERROR); cmp2(STATUS_TS_INCOMPATIBLE_SESSIONS, ERROR_TS_INCOMPATIBLE_SESSIONS); cmp2(STATUS_TS_VIDEO_SUBSYSTEM_ERROR, ERROR_TS_VIDEO_SUBSYSTEM_ERROR); + cmp2(STATUS_MUI_FILE_NOT_FOUND, ERROR_MUI_FILE_NOT_FOUND); + cmp2(STATUS_MUI_INVALID_FILE, ERROR_MUI_INVALID_FILE); + cmp2(STATUS_MUI_INVALID_RC_CONFIG, ERROR_MUI_INVALID_RC_CONFIG); + cmp2(STATUS_MUI_INVALID_LOCALE_NAME, ERROR_MUI_INVALID_LOCALE_NAME); + cmp2(STATUS_MUI_INVALID_ULTIMATEFALLBACK_NAME, ERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME); + cmp2(STATUS_MUI_FILE_NOT_LOADED, ERROR_MUI_FILE_NOT_LOADED); + cmp2(STATUS_RESOURCE_ENUM_USER_STOP, ERROR_RESOURCE_ENUM_USER_STOP); cmp2(STATUS_CLUSTER_NO_NET_ADAPTERS, ERROR_CLUSTER_NO_NET_ADAPTERS); cmp2(STATUS_CLUSTER_POISONED, ERROR_CLUSTER_POISONED); cmp2(STATUS_CLUSTER_NON_CSV_PATH, ERROR_NON_CSV_PATH);