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
, *PLPC_MESSAGE
;
55 typedef struct _LPC_TERMINATION_MESSAGE
59 } LPC_TERMINATION_MESSAGE
, *PLPC_TERMINATION_MESSAGE
;
61 typedef struct _LPC_DEBUG_MESSAGE
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 struct _LPC_MAX_MESSAGE
109 BYTE Data
[MAX_MESSAGE_DATA
];
110 } LPC_MAX_MESSAGE
, *PLPC_MAX_MESSAGE
;
112 #define PORT_MESSAGE_TYPE(m) (LPC_TYPE)((m).Header.MessageType)
114 #ifndef __USE_NT_LPC__
115 NTSTATUS STDCALL
NtAcceptConnectPort (PHANDLE PortHandle
,
116 HANDLE NamedPortHandle
,
117 PLPC_MESSAGE ServerReply
,
119 PLPC_SECTION_WRITE WriteMap
,
120 PLPC_SECTION_READ ReadMap
);
122 NTSTATUS STDCALL
NtAcceptConnectPort (PHANDLE PortHandle
,
123 ULONG PortIdentifier
,
124 PLPC_MESSAGE ServerReply
,
126 PLPC_SECTION_WRITE WriteMap
,
127 PLPC_SECTION_READ ReadMap
);
128 #endif /* ndef __USE_NT_LPC__ */
130 NTSTATUS STDCALL
NtCompleteConnectPort (HANDLE PortHandle
);
132 NTSTATUS STDCALL
NtConnectPort(PHANDLE PortHandle
,
133 PUNICODE_STRING PortName
,
134 PSECURITY_QUALITY_OF_SERVICE SecurityQos
,
135 PLPC_SECTION_WRITE SectionInfo
,
136 PLPC_SECTION_READ MapInfo
,
137 PULONG MaxMessageSize
,
139 PULONG ConnectInfoLength
);
141 NTSTATUS STDCALL
NtReplyWaitReplyPort (HANDLE PortHandle
,
142 PLPC_MESSAGE ReplyMessage
);
144 NTSTATUS STDCALL
NtCreatePort(PHANDLE PortHandle
,
145 POBJECT_ATTRIBUTES ObjectAttributes
,
146 ULONG MaxConnectInfoLength
,
148 ULONG NPMessageQueueSize OPTIONAL
);
150 NTSTATUS STDCALL
NtCreateWaitablePort(PHANDLE PortHandle
,
151 POBJECT_ATTRIBUTES ObjectAttributes
,
152 ULONG MaxConnectInfoLength
,
154 ULONG NPMessageQueueSize OPTIONAL
);
156 NTSTATUS STDCALL
NtImpersonateClientOfPort (HANDLE PortHandle
,
157 PLPC_MESSAGE ClientMessage
);
159 NTSTATUS STDCALL
NtListenPort (HANDLE PortHandle
,
160 PLPC_MESSAGE LpcMessage
);
162 NTSTATUS STDCALL
NtQueryInformationPort (HANDLE PortHandle
,
163 CINT PortInformationClass
,
164 PVOID PortInformation
,
165 ULONG PortInformationLength
,
166 PULONG ReturnLength
);
167 NTSTATUS STDCALL
NtReplyPort (HANDLE PortHandle
,
168 PLPC_MESSAGE LpcReply
);
169 NTSTATUS STDCALL
NtReplyWaitReceivePort (HANDLE PortHandle
,
171 PLPC_MESSAGE MessageReply
,
172 PLPC_MESSAGE MessageRequest
);
173 NTSTATUS STDCALL
NtRequestPort (HANDLE PortHandle
,
174 PLPC_MESSAGE LpcMessage
);
176 NTSTATUS STDCALL
NtRequestWaitReplyPort (HANDLE PortHandle
,
177 PLPC_MESSAGE LpcReply
,
178 PLPC_MESSAGE LpcRequest
);
180 NTSTATUS STDCALL
NtReadRequestData (HANDLE PortHandle
,
181 PLPC_MESSAGE Message
,
185 PULONG ReturnLength
);
187 NTSTATUS STDCALL
NtWriteRequestData (HANDLE PortHandle
,
188 PLPC_MESSAGE Message
,
192 PULONG ReturnLength
);
195 #endif /* __INCLUDE_NAPI_LPC_H */