1 #ifndef __INCLUDE_NAPI_LPC_H
2 #define __INCLUDE_NAPI_LPC_H
4 #include <ntos/security.h>
6 #define MAX_MESSAGE_DATA (0x130)
10 UNUSED_MSG_TYPE = 0x0, /* ReactOS */
11 LPC_NEW_MESSAGE = 0x0, /* NT */
16 LPC_PORT_CLOSED = 0x5,
17 LPC_CLIENT_DIED = 0x6,
19 LPC_DEBUG_EVENT = 0x8,
20 LPC_ERROR_EVENT = 0x9,
21 LPC_CONNECTION_REQUEST = 0xa,
22 LPC_CONNECTION_REFUSED = 0xb
24 } LPC_TYPE, *PLPC_TYPE;
26 typedef struct _LPC_SECTION_WRITE
34 } LPC_SECTION_WRITE, *PLPC_SECTION_WRITE;
36 typedef struct _LPC_SECTION_READ
41 } LPC_SECTION_READ, *PLPC_SECTION_READ;
43 typedef struct _LPC_MESSAGE_HEADER
47 // LPC_TYPE MessageType;
49 USHORT VirtualRangesOffset;
52 ULONG SharedSectionSize;
53 } LPC_MESSAGE_HEADER, *PLPC_MESSAGE_HEADER;
55 typedef struct _LPC_TERMINATION_MESSAGE
57 LPC_MESSAGE_HEADER Header;
59 } LPC_TERMINATION_MESSAGE, *PLPC_TERMINATION_MESSAGE;
61 typedef struct _LPC_DEBUG_MESSAGE
63 LPC_MESSAGE_HEADER Header;
68 EXCEPTION_RECORD ExceptionRecord;
79 ULONG PointerToSymbolTable;
80 ULONG NumberOfSymbols;
93 ULONG PointerToSymbolTable;
94 ULONG NumberOfSymbols;
99 #ifdef ANONYMOUSUNIONS
104 } LPC_DEBUG_MESSAGE, * PLPC_DEBUG_MESSAGE;
106 typedef LPC_MESSAGE_HEADER LPC_MESSAGE, *PLPC_MESSAGE;
108 typedef struct _LPC_MAX_MESSAGE
110 LPC_MESSAGE_HEADER Header;
111 BYTE Data[MAX_MESSAGE_DATA];
112 } LPC_MAX_MESSAGE, *PLPC_MAX_MESSAGE;
114 #define PORT_MESSAGE_TYPE(m) (LPC_TYPE)((m).Header.MessageType)
116 #ifndef __USE_NT_LPC__
117 NTSTATUS STDCALL NtAcceptConnectPort (PHANDLE PortHandle,
118 HANDLE NamedPortHandle,
119 PLPC_MESSAGE ServerReply,
121 PLPC_SECTION_WRITE WriteMap,
122 PLPC_SECTION_READ ReadMap);
124 NTSTATUS STDCALL NtAcceptConnectPort (PHANDLE PortHandle,
125 ULONG PortIdentifier,
126 PLPC_MESSAGE ServerReply,
128 PLPC_SECTION_WRITE WriteMap,
129 PLPC_SECTION_READ ReadMap);
130 #endif /* ndef __USE_NT_LPC__ */
132 NTSTATUS STDCALL NtCompleteConnectPort (HANDLE PortHandle);
134 NTSTATUS STDCALL NtConnectPort(PHANDLE PortHandle,
135 PUNICODE_STRING PortName,
136 PSECURITY_QUALITY_OF_SERVICE SecurityQos,
137 PLPC_SECTION_WRITE SectionInfo,
138 PLPC_SECTION_READ MapInfo,
139 PULONG MaxMessageSize,
141 PULONG ConnectInfoLength);
143 NTSTATUS STDCALL NtReplyWaitReplyPort (HANDLE PortHandle,
144 PLPC_MESSAGE ReplyMessage);
146 NTSTATUS STDCALL NtCreatePort(PHANDLE PortHandle,
147 POBJECT_ATTRIBUTES ObjectAttributes,
148 ULONG MaxConnectInfoLength,
150 ULONG NPMessageQueueSize OPTIONAL);
152 NTSTATUS STDCALL NtCreateWaitablePort(PHANDLE PortHandle,
153 POBJECT_ATTRIBUTES ObjectAttributes,
154 ULONG MaxConnectInfoLength,
156 ULONG NPMessageQueueSize OPTIONAL);
158 NTSTATUS STDCALL NtImpersonateClientOfPort (HANDLE PortHandle,
159 PLPC_MESSAGE ClientMessage);
161 NTSTATUS STDCALL NtListenPort (HANDLE PortHandle,
162 PLPC_MESSAGE LpcMessage);
164 NTSTATUS STDCALL NtQueryInformationPort (HANDLE PortHandle,
165 CINT PortInformationClass,
166 PVOID PortInformation,
167 ULONG PortInformationLength,
168 PULONG ReturnLength);
169 NTSTATUS STDCALL NtReplyPort (HANDLE PortHandle,
170 PLPC_MESSAGE LpcReply);
171 NTSTATUS STDCALL NtReplyWaitReceivePort (HANDLE PortHandle,
173 PLPC_MESSAGE MessageReply,
174 PLPC_MESSAGE MessageRequest);
175 NTSTATUS STDCALL NtRequestPort (HANDLE PortHandle,
176 PLPC_MESSAGE LpcMessage);
178 NTSTATUS STDCALL NtRequestWaitReplyPort (HANDLE PortHandle,
179 PLPC_MESSAGE LpcReply,
180 PLPC_MESSAGE LpcRequest);
182 NTSTATUS STDCALL NtReadRequestData (HANDLE PortHandle,
183 PLPC_MESSAGE Message,
187 PULONG ReturnLength);
189 NTSTATUS STDCALL NtWriteRequestData (HANDLE PortHandle,
190 PLPC_MESSAGE Message,
194 PULONG ReturnLength);
197 #endif /* __INCLUDE_NAPI_LPC_H */