implement user mode catchable exceptions, refactor system status codes to use NTLSTATUS_ prefix, update build scripts to use shared literal macros for linker arguments, update named queue lifetime cleanup to include KeNamedQueueUnpublishHandle.

This commit is contained in:
maksw committed 2026-06-27 20:38:43 +02:00
1 parent 1f5477cf66
commit b7fcfce6f7
140 files changed
+7649 -3943

No files matched your search

+126 -121
View File
@@ -1,140 +1,145 @@
; Syscall numbers shared by MASM user-mode stubs.
; Process, threads, modules, waits, and APC.
SYS_EXIT_PROCESS EQU 0
SYS_EXIT_THREAD EQU 1
SYS_CREATE_PROCESS EQU 2
SYS_OPEN_PROCESS EQU 3
SYS_GET_PROCESS_EXIT_CODE EQU 4
SYS_KILL_PROCESS EQU 5
SYS_GET_PROCESS_LIST EQU 6
SYS_GET_PROCESS_PID EQU 7
SYS_CREATE_THREAD EQU 8
SYS_GET_THREAD_LIST EQU 9
SYS_LOAD_MODULE EQU 10
SYS_UNLOAD_MODULE EQU 11
SYS_GET_MODULE_INFO EQU 12
SYS_GET_MODULE_EXPORT EQU 13
SYS_GET_MODULE_LIST EQU 14
SYS_GET_CURRENT_TID EQU 15
SYS_GET_CURRENT_PID EQU 16
SYS_SET_THREAD_PRIORITY EQU 17
SYS_YIELD EQU 18
SYS_SLEEP EQU 19
SYS_WAIT_SINGLE EQU 20
SYS_WAIT_MANY EQU 21
SYS_SET_USER_APC_DISPATCHER EQU 22
SYS_APC_RETURN EQU 23
; Process, threads, modules, waits, APC, and exceptions.
SYS_EXIT_PROCESS EQU 0
SYS_EXIT_THREAD EQU 1
SYS_CREATE_PROCESS EQU 2
SYS_OPEN_PROCESS EQU 3
SYS_GET_PROCESS_EXIT_CODE EQU 4
SYS_KILL_PROCESS EQU 5
SYS_GET_PROCESS_LIST EQU 6
SYS_GET_PROCESS_PID EQU 7
SYS_CREATE_THREAD EQU 8
SYS_GET_THREAD_LIST EQU 9
SYS_LOAD_MODULE EQU 10
SYS_UNLOAD_MODULE EQU 11
SYS_GET_MODULE_INFO EQU 12
SYS_GET_MODULE_EXPORT EQU 13
SYS_GET_MODULE_LIST EQU 14
SYS_GET_CURRENT_TID EQU 15
SYS_GET_CURRENT_PID EQU 16
SYS_SET_THREAD_PRIORITY EQU 17
SYS_YIELD EQU 18
SYS_SLEEP EQU 19
SYS_WAIT_SINGLE EQU 20
SYS_WAIT_MANY EQU 21
SYS_SET_USER_APC_DISPATCHER EQU 22
SYS_APC_RETURN EQU 23
SYS_SET_EXCEPTION_DISPATCHER EQU 24
SYS_GET_EXCEPTION_DISPATCHER EQU 25
SYS_CONTINUE_EXCEPTION EQU 26
SYS_RAISE_EXCEPTION EQU 27
; Virtual memory, mappings, and handles.
SYS_ALLOC_VM EQU 24
SYS_FREE_VM EQU 25
SYS_PROTECT_VM EQU 26
SYS_QUERY_VM EQU 27
SYS_CLOSE_HANDLE EQU 28
SYS_DUPLICATE_HANDLE EQU 29
SYS_CREATE_FILE_MAPPING EQU 30
SYS_MAP_FILE EQU 31
SYS_ALLOC_VM EQU 28
SYS_FREE_VM EQU 29
SYS_PROTECT_VM EQU 30
SYS_QUERY_VM EQU 31
SYS_CLOSE_HANDLE EQU 32
SYS_DUPLICATE_HANDLE EQU 33
SYS_CREATE_FILE_MAPPING EQU 34
SYS_MAP_FILE EQU 35
; Synchronization objects.
SYS_CREATE_MUTEX EQU 32
SYS_TRY_ACQUIRE_MUTEX EQU 33
SYS_RELEASE_MUTEX EQU 34
SYS_CREATE_SEM EQU 35
SYS_TRY_WAIT_SEM EQU 36
SYS_SIGNAL_SEM EQU 37
SYS_CREATE_EVENT EQU 38
SYS_SIGNAL_EVENT EQU 39
SYS_CLEAR_EVENT EQU 40
SYS_CREATE_MUTEX EQU 36
SYS_TRY_ACQUIRE_MUTEX EQU 37
SYS_RELEASE_MUTEX EQU 38
SYS_CREATE_SEM EQU 39
SYS_TRY_WAIT_SEM EQU 40
SYS_SIGNAL_SEM EQU 41
SYS_CREATE_EVENT EQU 42
SYS_SIGNAL_EVENT EQU 43
SYS_CLEAR_EVENT EQU 44
; Queues and named queues.
SYS_CREATE_QUEUE EQU 41
SYS_SEND_QUEUE EQU 42
SYS_RECV_QUEUE EQU 43
SYS_PUBLISH_QUEUE EQU 44
SYS_OPEN_NAMED_QUEUE EQU 45
SYS_OPEN_NAMED_QUEUE_OWNER_PROCESS EQU 46
SYS_CREATE_QUEUE EQU 45
SYS_SEND_QUEUE EQU 46
SYS_RECV_QUEUE EQU 47
SYS_PUBLISH_QUEUE EQU 48
SYS_OPEN_NAMED_QUEUE EQU 49
SYS_OPEN_NAMED_QUEUE_OWNER_PROCESS EQU 50
; Files, directories, and current directory.
SYS_OPEN_FILE EQU 47
SYS_READ_FILE EQU 48
SYS_WRITE_FILE EQU 49
SYS_READ_FILE_ASYNC EQU 50
SYS_WRITE_FILE_ASYNC EQU 51
SYS_CANCEL_IO EQU 52
SYS_SEEK_FILE EQU 53
SYS_GET_FILE_POS EQU 54
SYS_GET_FILE_SIZE EQU 55
SYS_GET_FILE_STAT EQU 56
SYS_STAT_FILE EQU 57
SYS_TRUNCATE_FILE EQU 58
SYS_FLUSH_FILE EQU 59
SYS_DELETE_FILE EQU 60
SYS_RENAME_FILE EQU 61
SYS_LOCK_FILE EQU 62
SYS_UNLOCK_FILE EQU 63
SYS_OPEN_DIR EQU 64
SYS_READ_DIR EQU 65
SYS_CREATE_DIR EQU 66
SYS_REMOVE_DIR EQU 67
SYS_SET_CWD EQU 68
SYS_REAL_PATH EQU 69
SYS_OPEN_FILE EQU 51
SYS_READ_FILE EQU 52
SYS_WRITE_FILE EQU 53
SYS_READ_FILE_ASYNC EQU 54
SYS_WRITE_FILE_ASYNC EQU 55
SYS_CANCEL_IO EQU 56
SYS_SEEK_FILE EQU 57
SYS_GET_FILE_POS EQU 58
SYS_GET_FILE_SIZE EQU 59
SYS_GET_FILE_STAT EQU 60
SYS_STAT_FILE EQU 61
SYS_TRUNCATE_FILE EQU 62
SYS_FLUSH_FILE EQU 63
SYS_DELETE_FILE EQU 64
SYS_RENAME_FILE EQU 65
SYS_LOCK_FILE EQU 66
SYS_UNLOCK_FILE EQU 67
SYS_OPEN_DIR EQU 68
SYS_READ_DIR EQU 69
SYS_CREATE_DIR EQU 70
SYS_REMOVE_DIR EQU 71
SYS_SET_CWD EQU 72
SYS_REAL_PATH EQU 73
; Console, display, and surfaces.
SYS_WRITE_CONSOLE EQU 70
SYS_GET_CONSOLE_INFO EQU 71
SYS_SET_CONSOLE_CURSOR EQU 72
SYS_FILL_CONSOLE_CHARACTER EQU 73
SYS_FILL_CONSOLE_ATTRIBUTE EQU 74
SYS_PUT_SCREEN_CHAR EQU 75
SYS_CLEAR_SCREEN EQU 76
SYS_GET_SCREEN_SIZE EQU 77
SYS_QUERY_DISPLAY_INFO EQU 78
SYS_CREATE_SURFACE EQU 79
SYS_MAP_SURFACE EQU 80
SYS_QUERY_SURFACE EQU 81
SYS_PRESENT_SURFACE EQU 82
SYS_WRITE_CONSOLE EQU 74
SYS_GET_CONSOLE_INFO EQU 75
SYS_SET_CONSOLE_CURSOR EQU 76
SYS_FILL_CONSOLE_CHARACTER EQU 77
SYS_FILL_CONSOLE_ATTRIBUTE EQU 78
SYS_PUT_SCREEN_CHAR EQU 79
SYS_CLEAR_SCREEN EQU 80
SYS_GET_SCREEN_SIZE EQU 81
SYS_QUERY_DISPLAY_INFO EQU 82
SYS_CREATE_SURFACE EQU 83
SYS_MAP_SURFACE EQU 84
SYS_QUERY_SURFACE EQU 85
SYS_PRESENT_SURFACE EQU 86
; Input.
SYS_POLL_KEYBOARD EQU 83
SYS_IS_KEY_DOWN EQU 84
SYS_READ_KEYBOARD_CHAR EQU 85
SYS_READ_KEY EQU 86
SYS_GET_KEY_MODIFIERS EQU 87
SYS_OPEN_INPUT_QUEUE EQU 88
SYS_READ_INPUT_EVENT EQU 89
SYS_PEEK_INPUT_EVENT EQU 90
SYS_PEEK_MOUSE EQU 91
SYS_READ_MOUSE EQU 92
SYS_GET_MOUSE_POS EQU 93
SYS_POLL_KEYBOARD EQU 87
SYS_IS_KEY_DOWN EQU 88
SYS_READ_KEYBOARD_CHAR EQU 89
SYS_READ_KEY EQU 90
SYS_GET_KEY_MODIFIERS EQU 91
SYS_OPEN_INPUT_QUEUE EQU 92
SYS_READ_INPUT_EVENT EQU 93
SYS_PEEK_INPUT_EVENT EQU 94
SYS_PEEK_MOUSE EQU 95
SYS_READ_MOUSE EQU 96
SYS_GET_MOUSE_POS EQU 97
; Time, debug, and system information.
SYS_CREATE_TIMER EQU 94
SYS_SET_TIMER EQU 95
SYS_CANCEL_TIMER EQU 96
SYS_GET_TICK EQU 97
SYS_GET_TICK_FREQUENCY EQU 98
SYS_GET_SYSTEM_TIME EQU 99
SYS_PRINT_DEBUG EQU 100
SYS_QUERY_TRAP_FRAME EQU 101
SYS_GET_MEMORY_STATUS EQU 102
SYS_QUERY_KERNEL_STATS EQU 103
SYS_CREATE_TIMER EQU 98
SYS_SET_TIMER EQU 99
SYS_CANCEL_TIMER EQU 100
SYS_GET_TICK EQU 101
SYS_GET_TICK_FREQUENCY EQU 102
SYS_GET_SYSTEM_TIME EQU 103
SYS_PRINT_DEBUG EQU 104
SYS_QUERY_TRAP_FRAME EQU 105
SYS_GET_MEMORY_STATUS EQU 106
SYS_QUERY_KERNEL_STATS EQU 107
; Native sockets and polling.
SYS_CREATE_SOCKET EQU 104
SYS_SOCKET_IO_ASYNC EQU 105
SYS_BIND_SOCKET EQU 106
SYS_LISTEN_SOCKET EQU 107
SYS_ACCEPT_SOCKET EQU 108
SYS_CONNECT_SOCKET EQU 109
SYS_SEND_SOCKET EQU 110
SYS_RECV_SOCKET EQU 111
SYS_SHUTDOWN_SOCKET EQU 112
SYS_SEND_TO_SOCKET EQU 113
SYS_RECV_FROM_SOCKET EQU 114
SYS_RESOLVE_HOST EQU 115
SYS_SET_SOCKET_OPTION EQU 116
SYS_GET_SOCKET_OPTION EQU 117
SYS_POLL EQU 118
SYS_CREATE_SOCKET EQU 108
SYS_SOCKET_IO_ASYNC EQU 109
SYS_BIND_SOCKET EQU 110
SYS_LISTEN_SOCKET EQU 111
SYS_ACCEPT_SOCKET EQU 112
SYS_CONNECT_SOCKET EQU 113
SYS_SEND_SOCKET EQU 114
SYS_RECV_SOCKET EQU 115
SYS_SHUTDOWN_SOCKET EQU 116
SYS_SEND_TO_SOCKET EQU 117
SYS_RECV_FROM_SOCKET EQU 118
SYS_RESOLVE_HOST EQU 119
SYS_SET_SOCKET_OPTION EQU 120
SYS_GET_SOCKET_OPTION EQU 121
SYS_POLL EQU 122
SYS_UNPUBLISH_QUEUE EQU 123
SYS_MAX EQU 119
SYS_MAX EQU 124