From 46fb4920325c492c3d2c4f913a2fb6b05266fb6a Mon Sep 17 00:00:00 2001 From: Aiken Harris Date: Fri, 3 Jul 2026 16:52:59 +0200 Subject: [PATCH] Define core LPC types and structures --- sdk/xtdk/iotypes.h | 7 +++++ sdk/xtdk/lpctypes.h | 64 +++++++++++++++++++++++++++++++++++++++++++++ sdk/xtdk/xtkmapi.h | 1 + sdk/xtdk/xtstruct.h | 4 +++ 4 files changed, 76 insertions(+) create mode 100644 sdk/xtdk/lpctypes.h diff --git a/sdk/xtdk/iotypes.h b/sdk/xtdk/iotypes.h index 071edb2..b8c3a7e 100644 --- a/sdk/xtdk/iotypes.h +++ b/sdk/xtdk/iotypes.h @@ -62,6 +62,13 @@ /* C/C++ specific code */ #ifndef __XTOS_ASSEMBLER__ +/* Client ID structure */ +typedef struct _CLIENT_ID +{ + HANDLE UniqueProcess; + HANDLE UniqueThread; +} CLIENT_ID, *PCLIENT_ID; + /* PCI bridge control registers */ typedef struct _PCI_BRIDGE_CONTROL_REGISTER { diff --git a/sdk/xtdk/lpctypes.h b/sdk/xtdk/lpctypes.h new file mode 100644 index 0000000..736f1a2 --- /dev/null +++ b/sdk/xtdk/lpctypes.h @@ -0,0 +1,64 @@ +/** + * PROJECT: ExectOS + * COPYRIGHT: See COPYING.md in the top level directory + * FILE: sdk/xtdk/lpctypes.h + * DESCRIPTION: Local Procedure Call (LPC) structures and definitions + * DEVELOPERS: Aiken Harris + */ + +#ifndef __XTDK_LPCTYPES_H +#define __XTDK_LPCTYPES_H + +#include +#include +#include +#include +#include + + +/* C/C++ specific code */ +#ifndef __XTOS_ASSEMBLER__ + +/* LPC non-paged port queue structure definition */ +typedef struct _LPCP_NONPAGED_PORT_QUEUE +{ + KSEMAPHORE Semaphore; + struct _LPCP_PORT_OBJECT *BackPointer; +} LPCP_NONPAGED_PORT_QUEUE, *PLPCP_NONPAGED_PORT_QUEUE; + +/* LPC port queue structure definition */ +typedef struct _LPCP_PORT_QUEUE +{ + PLPCP_NONPAGED_PORT_QUEUE NonPagedPortQueue; + PKSEMAPHORE Semaphore; + LIST_ENTRY ReceiveHead; +} LPCP_PORT_QUEUE, *PLPCP_PORT_QUEUE; + +/* LPC port object structure definition */ +typedef struct _LPCP_PORT_OBJECT +{ + struct _LPCP_PORT_OBJECT *ConnectionPort; + struct _LPCP_PORT_OBJECT *ConnectedPort; + LPCP_PORT_QUEUE MsgQueue; + CLIENT_ID Creator; + PVOID ClientSectionBase; + PVOID ServerSectionBase; + PVOID PortContext; + PETHREAD ClientThread; + SECURITY_QUALITY_OF_SERVICE SecurityQos; + SECURITY_CLIENT_CONTEXT StaticSecurity; + LIST_ENTRY LpcReplyChainHead; + LIST_ENTRY LpcDataInfoChainHead; + union + { + PEPROCESS ServerProcess; + PEPROCESS MappingProcess; + }; + ULONG MaxMessageLength; + ULONG MaxConnectionInfoLength; + ULONG Flags; + KEVENT WaitEvent; +} LPCP_PORT_OBJECT, *PLPCP_PORT_OBJECT; + +#endif /* __XTOS_ASSEMBLER__ */ +#endif /* __XTDK_LPCTYPES_H */ diff --git a/sdk/xtdk/xtkmapi.h b/sdk/xtdk/xtkmapi.h index 2505bdb..576c00e 100644 --- a/sdk/xtdk/xtkmapi.h +++ b/sdk/xtdk/xtkmapi.h @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include diff --git a/sdk/xtdk/xtstruct.h b/sdk/xtdk/xtstruct.h index 9570176..68b6416 100644 --- a/sdk/xtdk/xtstruct.h +++ b/sdk/xtdk/xtstruct.h @@ -87,6 +87,7 @@ typedef struct _ACPI_XSDT ACPI_XSDT, *PACPI_XSDT; typedef struct _ANSI_STRING ANSI_STRING, *PANSI_STRING; typedef struct _ANSI_STRING32 ANSI_STRING32, *PANSI_STRING32; typedef struct _ANSI_STRING64 ANSI_STRING64, *PANSI_STRING64; +typedef struct _CLIENT_ID CLIENT_ID, *PCLIENT_ID; typedef struct _CPPORT CPPORT, *PCPPORT; typedef struct _CPTABLE_INFO CPTABLE_INFO, *PCPTABLE_INFO; typedef const struct _CMMPAGEMAP_ROUTINES CMMPAGEMAP_ROUTINES, *PCMMPAGEMAP_ROUTINES; @@ -301,6 +302,9 @@ typedef struct _LOADER_INFORMATION_BLOCK LOADER_INFORMATION_BLOCK, *PLOADER_INFO typedef struct _LOADER_MEMORY_DESCRIPTOR LOADER_MEMORY_DESCRIPTOR, *PLOADER_MEMORY_DESCRIPTOR; typedef struct _LOOKASIDE_LIST LOOKASIDE_LIST, *PLOOKASIDE_LIST; typedef struct _LOOKASIDE_LIST_EX LOOKASIDE_LIST_EX, *PLOOKASIDE_LIST_EX; +typedef struct _LPCP_NONPAGED_PORT_QUEUE LPCP_NONPAGED_PORT_QUEUE, *PLPCP_NONPAGED_PORT_QUEUE; +typedef struct _LPCP_PORT_OBJECT LPCP_PORT_OBJECT, *PLPCP_PORT_OBJECT; +typedef struct _LPCP_PORT_QUEUE LPCP_PORT_QUEUE, *PLPCP_PORT_QUEUE; typedef struct _LUID LUID, *PLUID; typedef struct _LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES, *PLUID_AND_ATTRIBUTES; typedef struct _M128 M128, *PM128;