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 /* Code in ntoskrnl/lpc/close.h */
96 LpcpClosePort (PVOID ObjectBody
,
99 LpcpDeletePort (IN PVOID ObjectBody
);
101 /* Code in ntoskrnl/lpc/queue.c */
104 EiEnqueueConnectMessagePort (IN OUT PEPORT Port
,
105 IN PQUEUEDMESSAGE Message
);
107 EiEnqueueMessagePort (IN OUT PEPORT Port
,
108 IN PQUEUEDMESSAGE Message
);
110 EiEnqueueMessageAtHeadPort (IN OUT PEPORT Port
,
111 IN PQUEUEDMESSAGE Message
);
114 EiDequeueConnectMessagePort (IN OUT PEPORT Port
);
115 PQUEUEDMESSAGE STDCALL
116 EiDequeueMessagePort (IN OUT PEPORT Port
);
118 /* Code in ntoskrnl/lpc/create.c */
121 NiCreatePort (PVOID ObjectBody
,
124 POBJECT_ATTRIBUTES ObjectAttributes
);
126 /* Code in ntoskrnl/lpc/port.c */
129 LpcpInitializePort (IN OUT PEPORT Port
,
131 IN PEPORT Parent OPTIONAL
);
133 LpcpInitSystem (VOID
);
135 extern POBJECT_TYPE LpcPortObjectType
;
136 extern ULONG LpcpNextMessageId
;
137 extern FAST_MUTEX LpcpLock
;
139 /* Code in ntoskrnl/lpc/reply.c */
142 EiReplyOrRequestPort (IN PEPORT Port
,
143 IN PPORT_MESSAGE LpcReply
,
144 IN ULONG MessageType
,
148 #endif /* __INCLUDE_INTERNAL_PORT_H */