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 */
33 typedef struct _EPORT_TERMINATION_REQUEST
35 LIST_ENTRY ThreadListEntry
;
37 } EPORT_TERMINATION_REQUEST
, *PEPORT_TERMINATION_REQUEST
;
40 typedef struct _EPORT_CONNECT_REQUEST_MESSAGE
42 LPC_MESSAGE MessageHeader
;
43 PEPROCESS ConnectingProcess
;
44 struct _SECTION_OBJECT
* SendSectionObject
;
45 LARGE_INTEGER SendSectionOffset
;
47 ULONG ConnectDataLength
;
49 } EPORT_CONNECT_REQUEST_MESSAGE
, *PEPORT_CONNECT_REQUEST_MESSAGE
;
51 typedef struct _EPORT_CONNECT_REPLY_MESSAGE
53 LPC_MESSAGE MessageHeader
;
54 PVOID SendServerViewBase
;
55 ULONG ReceiveClientViewSize
;
56 PVOID ReceiveClientViewBase
;
57 ULONG MaximumMessageSize
;
58 ULONG ConnectDataLength
;
60 } EPORT_CONNECT_REPLY_MESSAGE
, *PEPORT_CONNECT_REPLY_MESSAGE
;
63 LpcRequestPort (PEPORT Port
,
64 PLPC_MESSAGE LpcMessage
);
67 LpcSendTerminationPort (PEPORT Port
,
68 LARGE_INTEGER CreationTime
);
72 #define EPORT_TYPE_SERVER_RQST_PORT (0)
73 #define EPORT_TYPE_SERVER_COMM_PORT (1)
74 #define EPORT_TYPE_CLIENT_COMM_PORT (2)
78 #define EPORT_INACTIVE (0)
79 #define EPORT_WAIT_FOR_CONNECT (1)
80 #define EPORT_WAIT_FOR_ACCEPT (2)
81 #define EPORT_WAIT_FOR_COMPLETE_SRV (3)
82 #define EPORT_WAIT_FOR_COMPLETE_CLT (4)
83 #define EPORT_CONNECTED_CLIENT (5)
84 #define EPORT_CONNECTED_SERVER (6)
85 #define EPORT_DISCONNECTED (7)
89 #define TAG_LPC_MESSAGE TAG('L', 'p', 'c', 'M')
90 #define TAG_LPC_ZONE TAG('L', 'p', 'c', 'Z')
93 typedef struct _QUEUEDMESSAGE
96 LIST_ENTRY QueueListEntry
;
98 UCHAR MessageData
[MAX_MESSAGE_DATA
];
99 } QUEUEDMESSAGE
, *PQUEUEDMESSAGE
;
101 /* Code in ntoskrnl/lpc/close.h */
104 NiClosePort (PVOID ObjectBody
,
107 NiDeletePort (IN PVOID ObjectBody
);
109 /* Code in ntoskrnl/lpc/queue.c */
112 EiEnqueueConnectMessagePort (IN OUT PEPORT Port
,
113 IN PQUEUEDMESSAGE Message
);
115 EiEnqueueMessagePort (IN OUT PEPORT Port
,
116 IN PQUEUEDMESSAGE Message
);
118 EiEnqueueMessageAtHeadPort (IN OUT PEPORT Port
,
119 IN PQUEUEDMESSAGE Message
);
122 EiDequeueConnectMessagePort (IN OUT PEPORT Port
);
123 PQUEUEDMESSAGE STDCALL
124 EiDequeueMessagePort (IN OUT PEPORT Port
);
126 /* Code in ntoskrnl/lpc/create.c */
129 NiCreatePort (PVOID ObjectBody
,
132 POBJECT_ATTRIBUTES ObjectAttributes
);
134 /* Code in ntoskrnl/lpc/port.c */
137 NiInitializePort (IN OUT PEPORT Port
,
139 IN PEPORT Parent OPTIONAL
);
143 extern POBJECT_TYPE LpcPortObjectType
;
144 extern ULONG LpcpNextMessageId
;
145 extern FAST_MUTEX LpcpLock
;
147 /* Code in ntoskrnl/lpc/reply.c */
150 EiReplyOrRequestPort (IN PEPORT Port
,
151 IN PLPC_MESSAGE LpcReply
,
152 IN ULONG MessageType
,
156 #endif /* __INCLUDE_INTERNAL_PORT_H */