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 LPC_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 LPC_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 PLPC_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 #define TAG_LPC_MESSAGE TAG('L', 'p', 'c', 'M')
87 #define TAG_LPC_ZONE TAG('L', 'p', 'c', 'Z')
90 typedef struct _QUEUEDMESSAGE
93 LIST_ENTRY QueueListEntry
;
95 UCHAR MessageData
[MAX_MESSAGE_DATA
];
96 } QUEUEDMESSAGE
, *PQUEUEDMESSAGE
;
98 typedef struct _LPC_DBG_MESSAGE
107 EXCEPTION_RECORD ExceptionRecord
;
120 ULONG PointerToSymbolTable
;
121 ULONG NumberOfSymbols
;
137 ULONG PointerToSymbolTable
;
138 ULONG NumberOfSymbols
;
145 } LPC_DBG_MESSAGE
, *PLPC_DBG_MESSAGE
;
147 typedef struct _LPC_TERMINATION_MESSAGE
150 LARGE_INTEGER CreationTime
;
151 } LPC_TERMINATION_MESSAGE
, *PLPC_TERMINATION_MESSAGE
;
153 /* Code in ntoskrnl/lpc/close.h */
156 LpcpClosePort (PVOID ObjectBody
,
159 LpcpDeletePort (IN PVOID ObjectBody
);
161 /* Code in ntoskrnl/lpc/queue.c */
164 EiEnqueueConnectMessagePort (IN OUT PEPORT Port
,
165 IN PQUEUEDMESSAGE Message
);
167 EiEnqueueMessagePort (IN OUT PEPORT Port
,
168 IN PQUEUEDMESSAGE Message
);
170 EiEnqueueMessageAtHeadPort (IN OUT PEPORT Port
,
171 IN PQUEUEDMESSAGE Message
);
174 EiDequeueConnectMessagePort (IN OUT PEPORT Port
);
175 PQUEUEDMESSAGE STDCALL
176 EiDequeueMessagePort (IN OUT PEPORT Port
);
178 /* Code in ntoskrnl/lpc/create.c */
181 NiCreatePort (PVOID ObjectBody
,
184 POBJECT_ATTRIBUTES ObjectAttributes
);
186 /* Code in ntoskrnl/lpc/port.c */
189 LpcpInitializePort (IN OUT PEPORT Port
,
191 IN PEPORT Parent OPTIONAL
);
193 LpcpInitSystem (VOID
);
195 extern POBJECT_TYPE LpcPortObjectType
;
196 extern ULONG LpcpNextMessageId
;
197 extern FAST_MUTEX LpcpLock
;
199 /* Code in ntoskrnl/lpc/reply.c */
202 EiReplyOrRequestPort (IN PEPORT Port
,
203 IN PLPC_MESSAGE LpcReply
,
204 IN ULONG MessageType
,
208 #endif /* __INCLUDE_INTERNAL_PORT_H */