1 #ifndef __INCLUDE_NAPI_LPC_H
2 #define __INCLUDE_NAPI_LPC_H
6 #endif /* !__USE_W32API */
8 #include <ntos/security.h>
10 #define MAX_MESSAGE_DATA (0x130)
16 UNUSED_MSG_TYPE = 0x0, /* ReactOS */
17 LPC_NEW_MESSAGE = 0x0, /* NT */
22 LPC_PORT_CLOSED = 0x5,
23 LPC_CLIENT_DIED = 0x6,
25 LPC_DEBUG_EVENT = 0x8,
26 LPC_ERROR_EVENT = 0x9,
27 LPC_CONNECTION_REQUEST = 0xa,
28 LPC_CONNECTION_REFUSED = 0xb
30 } LPC_TYPE, *PLPC_TYPE;
32 typedef struct _LPC_SECTION_WRITE
40 } LPC_SECTION_WRITE, *PLPC_SECTION_WRITE;
42 typedef struct _LPC_SECTION_READ
47 } LPC_SECTION_READ, *PLPC_SECTION_READ;
49 typedef struct _LPC_MESSAGE_HEADER
53 // LPC_TYPE MessageType;
55 USHORT VirtualRangesOffset;
58 ULONG SharedSectionSize;
59 } LPC_MESSAGE, *PLPC_MESSAGE;
61 #endif /* !__USE_W32API */
63 typedef struct _LPC_TERMINATION_MESSAGE
67 } LPC_TERMINATION_MESSAGE, *PLPC_TERMINATION_MESSAGE;
69 typedef struct _LPC_DEBUG_MESSAGE
76 EXCEPTION_RECORD ExceptionRecord;
87 ULONG PointerToSymbolTable;
88 ULONG NumberOfSymbols;
101 ULONG PointerToSymbolTable;
102 ULONG NumberOfSymbols;
107 #ifdef ANONYMOUSUNIONS
112 } LPC_DEBUG_MESSAGE, * PLPC_DEBUG_MESSAGE;
114 typedef struct _LPC_MAX_MESSAGE
117 BYTE Data[MAX_MESSAGE_DATA];
118 } LPC_MAX_MESSAGE, *PLPC_MAX_MESSAGE;
120 #define PORT_MESSAGE_TYPE(m) (LPC_TYPE)((m).Header.MessageType)
122 #ifndef __USE_NT_LPC__
123 NTSTATUS STDCALL NtAcceptConnectPort (PHANDLE PortHandle,
124 HANDLE NamedPortHandle,
125 PLPC_MESSAGE ServerReply,
127 PLPC_SECTION_WRITE WriteMap,
128 PLPC_SECTION_READ ReadMap);
130 NTSTATUS STDCALL NtAcceptConnectPort (PHANDLE PortHandle,
131 ULONG PortIdentifier,
132 PLPC_MESSAGE ServerReply,
134 PLPC_SECTION_WRITE WriteMap,
135 PLPC_SECTION_READ ReadMap);
136 #endif /* ndef __USE_NT_LPC__ */
138 NTSTATUS STDCALL NtCompleteConnectPort (HANDLE PortHandle);
140 NTSTATUS STDCALL NtConnectPort(PHANDLE PortHandle,
141 PUNICODE_STRING PortName,
142 PSECURITY_QUALITY_OF_SERVICE SecurityQos,
143 PLPC_SECTION_WRITE SectionInfo,
144 PLPC_SECTION_READ MapInfo,
145 PULONG MaxMessageSize,
147 PULONG ConnectInfoLength);
149 NTSTATUS STDCALL NtReplyWaitReplyPort (HANDLE PortHandle,
150 PLPC_MESSAGE ReplyMessage);
152 NTSTATUS STDCALL NtCreatePort(PHANDLE PortHandle,
153 POBJECT_ATTRIBUTES ObjectAttributes,
154 ULONG MaxConnectInfoLength,
156 ULONG NPMessageQueueSize OPTIONAL);
158 NTSTATUS STDCALL NtCreateWaitablePort(PHANDLE PortHandle,
159 POBJECT_ATTRIBUTES ObjectAttributes,
160 ULONG MaxConnectInfoLength,
162 ULONG NPMessageQueueSize OPTIONAL);
164 NTSTATUS STDCALL NtImpersonateClientOfPort (HANDLE PortHandle,
165 PLPC_MESSAGE ClientMessage);
167 NTSTATUS STDCALL NtListenPort (HANDLE PortHandle,
168 PLPC_MESSAGE LpcMessage);
170 NTSTATUS STDCALL NtQueryInformationPort (HANDLE PortHandle,
171 CINT PortInformationClass,
172 PVOID PortInformation,
173 ULONG PortInformationLength,
174 PULONG ReturnLength);
175 NTSTATUS STDCALL NtReplyPort (HANDLE PortHandle,
176 PLPC_MESSAGE LpcReply);
177 NTSTATUS STDCALL NtReplyWaitReceivePort (HANDLE PortHandle,
179 PLPC_MESSAGE MessageReply,
180 PLPC_MESSAGE MessageRequest);
181 NTSTATUS STDCALL NtRequestPort (HANDLE PortHandle,
182 PLPC_MESSAGE LpcMessage);
184 NTSTATUS STDCALL NtRequestWaitReplyPort (HANDLE PortHandle,
185 PLPC_MESSAGE LpcReply,
186 PLPC_MESSAGE LpcRequest);
188 NTSTATUS STDCALL NtReadRequestData (HANDLE PortHandle,
189 PLPC_MESSAGE Message,
193 PULONG ReturnLength);
195 NTSTATUS STDCALL NtWriteRequestData (HANDLE PortHandle,
196 PLPC_MESSAGE Message,
200 PULONG ReturnLength);
203 #endif /* __INCLUDE_NAPI_LPC_H */