ntdll: Add error mapping for MUI statuses.

Signed-off-by: Mark Harmstone <mark@harmstone.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Mark Harmstone 2021-03-25 01:56:21 +00:00 committed by Alexandre Julliard
parent 4ccf44bb92
commit 9ea1134eea
3 changed files with 27 additions and 5 deletions

View File

@ -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 )

View File

@ -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

View File

@ -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);