1 #ifndef __INCLUDE_NAPI_LPC_H
2 #define __INCLUDE_NAPI_LPC_H
6 #include <napi/types.h>
7 #endif /* !__USE_W32API */
9 #include <ntos/security.h>
11 #define MAX_MESSAGE_DATA (0x130)
17 UNUSED_MSG_TYPE = 0x0, /* ReactOS */
18 LPC_NEW_MESSAGE = 0x0, /* NT */
23 LPC_PORT_CLOSED = 0x5,
24 LPC_CLIENT_DIED = 0x6,
26 LPC_DEBUG_EVENT = 0x8,
27 LPC_ERROR_EVENT = 0x9,
28 LPC_CONNECTION_REQUEST = 0xa,
29 LPC_CONNECTION_REFUSED = 0xb
31 } LPC_TYPE, *PLPC_TYPE;
33 typedef struct _LPC_SECTION_WRITE
41 } LPC_SECTION_WRITE, *PLPC_SECTION_WRITE;
43 typedef struct _LPC_SECTION_READ
48 } LPC_SECTION_READ, *PLPC_SECTION_READ;
50 typedef struct _LPC_MESSAGE
55 USHORT VirtualRangesOffset;
58 ULONG SectionSize; /* CallbackID */
59 } LPC_MESSAGE, *PLPC_MESSAGE;
61 #endif /* !__USE_W32API */
64 typedef struct _LPC_TERMINATION_MESSAGE
68 } LPC_TERMINATION_MESSAGE, *PLPC_TERMINATION_MESSAGE;
70 typedef struct _LPC_DEBUG_MESSAGE
77 EXCEPTION_RECORD ExceptionRecord;
88 ULONG PointerToSymbolTable;
89 ULONG NumberOfSymbols;
102 ULONG PointerToSymbolTable;
103 ULONG NumberOfSymbols;
108 #ifdef ANONYMOUSUNIONS
113 } LPC_DEBUG_MESSAGE, * PLPC_DEBUG_MESSAGE;
115 typedef struct _LPC_MAX_MESSAGE
118 BYTE Data[MAX_MESSAGE_DATA];
119 } LPC_MAX_MESSAGE, *PLPC_MAX_MESSAGE;
121 #define PORT_MESSAGE_TYPE(m) (LPC_TYPE)((m).Header.MessageType)
123 #ifndef __USE_NT_LPC__
124 NTSTATUS STDCALL NtAcceptConnectPort (PHANDLE PortHandle,
125 HANDLE NamedPortHandle,
126 PLPC_MESSAGE ServerReply,
128 PLPC_SECTION_WRITE WriteMap,
129 PLPC_SECTION_READ ReadMap);
131 NTSTATUS STDCALL NtAcceptConnectPort (PHANDLE PortHandle,
132 ULONG PortIdentifier,
133 PLPC_MESSAGE ServerReply,
135 PLPC_SECTION_WRITE WriteMap,
136 PLPC_SECTION_READ ReadMap);
137 #endif /* ndef __USE_NT_LPC__ */
139 NTSTATUS STDCALL NtCompleteConnectPort (HANDLE PortHandle);
141 NTSTATUS STDCALL NtConnectPort(PHANDLE PortHandle,
142 PUNICODE_STRING PortName,
143 PSECURITY_QUALITY_OF_SERVICE SecurityQos,
144 PLPC_SECTION_WRITE SectionInfo,
145 PLPC_SECTION_READ MapInfo,
146 PULONG MaxMessageSize,
148 PULONG ConnectInfoLength);
150 NTSTATUS STDCALL NtReplyWaitReplyPort (HANDLE PortHandle,
151 PLPC_MESSAGE ReplyMessage);
153 NTSTATUS STDCALL NtCreatePort(PHANDLE PortHandle,
154 POBJECT_ATTRIBUTES ObjectAttributes,
155 ULONG MaxConnectInfoLength,
157 ULONG NPMessageQueueSize OPTIONAL);
159 NTSTATUS STDCALL NtCreateWaitablePort(PHANDLE PortHandle,
160 POBJECT_ATTRIBUTES ObjectAttributes,
161 ULONG MaxConnectInfoLength,
163 ULONG NPMessageQueueSize OPTIONAL);
165 NTSTATUS STDCALL NtImpersonateClientOfPort (HANDLE PortHandle,
166 PLPC_MESSAGE ClientMessage);
168 NTSTATUS STDCALL NtListenPort (HANDLE PortHandle,
169 PLPC_MESSAGE LpcMessage);
171 NTSTATUS STDCALL NtQueryInformationPort (HANDLE PortHandle,
172 CINT PortInformationClass,
173 PVOID PortInformation,
174 ULONG PortInformationLength,
175 PULONG ReturnLength);
176 NTSTATUS STDCALL NtReplyPort (HANDLE PortHandle,
177 PLPC_MESSAGE LpcReply);
178 NTSTATUS STDCALL NtReplyWaitReceivePort (HANDLE PortHandle,
180 PLPC_MESSAGE MessageReply,
181 PLPC_MESSAGE MessageRequest);
182 NTSTATUS STDCALL NtRequestPort (HANDLE PortHandle,
183 PLPC_MESSAGE LpcMessage);
185 NTSTATUS STDCALL NtRequestWaitReplyPort (HANDLE PortHandle,
186 PLPC_MESSAGE LpcReply,
187 PLPC_MESSAGE LpcRequest);
189 NTSTATUS STDCALL NtReadRequestData (HANDLE PortHandle,
190 PLPC_MESSAGE Message,
194 PULONG ReturnLength);
196 NTSTATUS STDCALL NtWriteRequestData (HANDLE PortHandle,
197 PLPC_MESSAGE Message,
201 PULONG ReturnLength);
204 #endif /* __INCLUDE_NAPI_LPC_H */