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 */