1 #ifndef __INCLUDE_INTERNAL_PORT_H
2 #define __INCLUDE_INTERNAL_PORT_H
4 typedef struct _EPORT_LISTENER
7 LIST_ENTRY ListenerListEntry
;
8 } EPORT_LISTENER
, *PEPORT_LISTENER
;
18 struct _EPORT
* RequestPort
;
19 struct _EPORT
* OtherPort
;
22 LIST_ENTRY QueueListHead
;
24 ULONG ConnectQueueLength
;
25 LIST_ENTRY ConnectQueueListHead
;
28 ULONG MaxConnectInfoLength
;
29 ULONG MaxPoolUsage
; /* size of NP zone */
32 typedef struct _EPORT_CONNECT_REQUEST_MESSAGE
34 PORT_MESSAGE MessageHeader
;
35 PEPROCESS ConnectingProcess
;
36 struct _SECTION_OBJECT
* SendSectionObject
;
37 LARGE_INTEGER SendSectionOffset
;
39 ULONG ConnectDataLength
;
41 } EPORT_CONNECT_REQUEST_MESSAGE
, *PEPORT_CONNECT_REQUEST_MESSAGE
;
43 typedef struct _EPORT_CONNECT_REPLY_MESSAGE
45 PORT_MESSAGE MessageHeader
;
46 PVOID SendServerViewBase
;
47 ULONG ReceiveClientViewSize
;
48 PVOID ReceiveClientViewBase
;
49 ULONG MaximumMessageSize
;
50 ULONG ConnectDataLength
;
52 } EPORT_CONNECT_REPLY_MESSAGE
, *PEPORT_CONNECT_REPLY_MESSAGE
;
54 typedef struct _TERMINATION_PORT
{
55 struct _TERMINATION_PORT
*Next
;
57 } TERMINATION_PORT
, *PTERMINATION_PORT
;
60 LpcRequestPort (PEPORT Port
,
61 PPORT_MESSAGE LpcMessage
);
64 LpcSendTerminationPort (PEPORT Port
,
65 LARGE_INTEGER CreationTime
);
69 #define EPORT_TYPE_SERVER_RQST_PORT (0)
70 #define EPORT_TYPE_SERVER_COMM_PORT (1)
71 #define EPORT_TYPE_CLIENT_COMM_PORT (2)
75 #define EPORT_INACTIVE (0)
76 #define EPORT_WAIT_FOR_CONNECT (1)
77 #define EPORT_WAIT_FOR_ACCEPT (2)
78 #define EPORT_WAIT_FOR_COMPLETE_SRV (3)
79 #define EPORT_WAIT_FOR_COMPLETE_CLT (4)
80 #define EPORT_CONNECTED_CLIENT (5)
81 #define EPORT_CONNECTED_SERVER (6)
82 #define EPORT_DISCONNECTED (7)
86 typedef struct _QUEUEDMESSAGE
89 LIST_ENTRY QueueListEntry
;
91 } QUEUEDMESSAGE
, *PQUEUEDMESSAGE
;
93 typedef struct _LPC_DBG_MESSAGE
102 EXCEPTION_RECORD ExceptionRecord
;
115 ULONG PointerToSymbolTable
;
116 ULONG NumberOfSymbols
;
132 ULONG PointerToSymbolTable
;
133 ULONG NumberOfSymbols
;
140 } LPC_DBG_MESSAGE
, *PLPC_DBG_MESSAGE
;
142 typedef struct _LPC_TERMINATION_MESSAGE
145 LARGE_INTEGER CreationTime
;
146 } LPC_TERMINATION_MESSAGE
, *PLPC_TERMINATION_MESSAGE
;
148 /* Code in ntoskrnl/lpc/close.h */
151 LpcpClosePort (PVOID ObjectBody
,
154 LpcpDeletePort (IN PVOID ObjectBody
);
156 /* Code in ntoskrnl/lpc/queue.c */
159 EiEnqueueConnectMessagePort (IN OUT PEPORT Port
,
160 IN PQUEUEDMESSAGE Message
);
162 EiEnqueueMessagePort (IN OUT PEPORT Port
,
163 IN PQUEUEDMESSAGE Message
);
165 EiEnqueueMessageAtHeadPort (IN OUT PEPORT Port
,
166 IN PQUEUEDMESSAGE Message
);
169 EiDequeueConnectMessagePort (IN OUT PEPORT Port
);
170 PQUEUEDMESSAGE STDCALL
171 EiDequeueMessagePort (IN OUT PEPORT Port
);
173 /* Code in ntoskrnl/lpc/create.c */
176 NiCreatePort (PVOID ObjectBody
,
179 POBJECT_ATTRIBUTES ObjectAttributes
);
181 /* Code in ntoskrnl/lpc/port.c */
184 LpcpInitializePort (IN OUT PEPORT Port
,
186 IN PEPORT Parent OPTIONAL
);
188 LpcpInitSystem (VOID
);
190 extern POBJECT_TYPE LpcPortObjectType
;
191 extern ULONG LpcpNextMessageId
;
192 extern FAST_MUTEX LpcpLock
;
194 /* Code in ntoskrnl/lpc/reply.c */
197 EiReplyOrRequestPort (IN PEPORT Port
,
198 IN PPORT_MESSAGE LpcReply
,
199 IN ULONG MessageType
,
203 #endif /* __INCLUDE_INTERNAL_PORT_H */