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

@@ -73,7 +73,7 @@ static void check_ipv4_resolve(void) {
req.AddressSizeInOut = &addressSize;
uint32_t status = SysResolveHost(&req);
if (status != STATUS_SUCCESS) fail_status("resolve ipv4", status);
if (status != NTLSTATUS_SUCCESS) fail_status("resolve ipv4", status);
if (addressSize != sizeof(address)) fail("resolve ipv4 size mismatch");
if (address.Family != SYS_AF_INET || address.Size != sizeof(address)) fail("resolve ipv4 tag mismatch");
if (address.Address[0] != 127 || address.Address[1] != 0 || address.Address[2] != 0 || address.Address[3] != 1)
@@ -93,7 +93,7 @@ static void check_ipv6_resolve(void) {
req.AddressSizeInOut = &addressSize;
uint32_t status = SysResolveHost(&req);
if (status != STATUS_SUCCESS) fail_status("resolve ipv6", status);
if (status != NTLSTATUS_SUCCESS) fail_status("resolve ipv6", status);
if (addressSize != sizeof(address)) fail("resolve ipv6 size mismatch");
if (address.Family != SYS_AF_INET6 || address.Size != sizeof(address)) fail("resolve ipv6 tag mismatch");
for (int i = 0; i < 15; i++) {
@@ -107,10 +107,10 @@ static void check_socket_address_validation(void) {
uint32_t ipv4 = 0;
uint32_t ipv6 = 0;
uint32_t status = SysCreateSocket(SYS_AF_INET, SYS_SOCK_DGRAM, SYS_IPPROTO_UDP, &ipv4);
if (status != STATUS_SUCCESS) fail_status("create ipv4 udp", status);
if (status != NTLSTATUS_SUCCESS) fail_status("create ipv4 udp", status);
status = SysCreateSocket(SYS_AF_INET6, SYS_SOCK_DGRAM, SYS_IPPROTO_UDP, &ipv6);
if (status != STATUS_SUCCESS) fail_status("create ipv6 udp", status);
if (status != NTLSTATUS_SUCCESS) fail_status("create ipv6 udp", status);
SYS_SOCKET_ADDRESS ipv4Address;
memset(&ipv4Address, 0, sizeof(ipv4Address));
@@ -128,10 +128,16 @@ static void check_socket_address_validation(void) {
SYS_SOCKET_ADDRESS badSize = ipv6Address;
badSize.Size = sizeof(badSize) - 1;
status = SysBindSocket(ipv6, &badSize, sizeof(badSize));
if (status == STATUS_SUCCESS) fail("bind accepted wrong ipv6 size");
if (status != NTLSTATUS_INVALID_PARAMETER) fail_status("bind wrong struct size", status);
status = SysBindSocket(ipv6, &ipv6Address, sizeof(ipv6Address) - 1);
if (status != NTLSTATUS_BUFFER_TOO_SMALL) fail_status("bind short buffer size", status);
status = SysBindSocket(ipv6, &ipv6Address, sizeof(ipv6Address) + 1);
if (status != NTLSTATUS_INVALID_PARAMETER) fail_status("bind oversized buffer size", status);
status = SysConnectSocket(ipv4, &ipv6Address, sizeof(ipv6Address));
if (status == STATUS_SUCCESS) fail("connect accepted wrong address family");
if (status == NTLSTATUS_SUCCESS) fail("connect accepted wrong address family");
SysCloseHandle(ipv4);
SysCloseHandle(ipv6);