1 #ifndef __INCLUDE_INTERNAL_PORT_H
2 #define __INCLUDE_INTERNAL_PORT_H
6 typedef struct _EPORT_LISTENER
9 LIST_ENTRY ListenerListEntry
;
10 } EPORT_LISTENER
, *PEPORT_LISTENER
;
19 struct _EPORT
* OtherPort
;
22 LIST_ENTRY QueueListHead
;
24 ULONG ConnectQueueLength
;
25 LIST_ENTRY ConnectQueueListHead
;
28 ULONG MaxConnectInfoLength
;
31 * List of processes that can receive connection requests on this port.
33 LIST_ENTRY ListenerListHead
;
37 typedef struct _EPORT_TERMINATION_REQUEST
39 LIST_ENTRY ThreadListEntry
;
41 } EPORT_TERMINATION_REQUEST
, *PEPORT_TERMINATION_REQUEST
;
44 typedef struct _EPORT_CONNECT_REQUEST_MESSAGE
46 LPC_MESSAGE_HEADER MessageHeader
;
47 PEPROCESS ConnectingProcess
;
48 struct _SECTION_OBJECT
* SendSectionObject
;
49 LARGE_INTEGER SendSectionOffset
;
51 ULONG ConnectDataLength
;
53 } EPORT_CONNECT_REQUEST_MESSAGE
, *PEPORT_CONNECT_REQUEST_MESSAGE
;
55 typedef struct _EPORT_CONNECT_REPLY_MESSAGE
57 LPC_MESSAGE_HEADER MessageHeader
;
58 PVOID SendServerViewBase
;
59 ULONG ReceiveClientViewSize
;
60 PVOID ReceiveClientViewBase
;
61 ULONG MaximumMessageSize
;
62 ULONG ConnectDataLength
;
64 } EPORT_CONNECT_REPLY_MESSAGE
, *PEPORT_CONNECT_REPLY_MESSAGE
;
67 LpcRequestPort (PEPORT Port
,
68 PLPC_MESSAGE LpcMessage
);
71 LpcSendTerminationPort (PEPORT Port
,
77 #define EPORT_INACTIVE (0)
78 #define EPORT_WAIT_FOR_CONNECT (1)
79 #define EPORT_WAIT_FOR_ACCEPT (2)
80 #define EPORT_WAIT_FOR_COMPLETE_SRV (3)
81 #define EPORT_WAIT_FOR_COMPLETE_CLT (4)
82 #define EPORT_CONNECTED_CLIENT (5)
83 #define EPORT_CONNECTED_SERVER (6)
84 #define EPORT_DISCONNECTED (7)
86 typedef struct _QUEUEDMESSAGE
89 LIST_ENTRY QueueListEntry
;
91 UCHAR MessageData
[MAX_MESSAGE_DATA
];
92 } QUEUEDMESSAGE
, *PQUEUEDMESSAGE
;
94 /* Code in ntoskrnl/lpc/close.h */
97 NiClosePort (PVOID ObjectBody
,
100 NiDeletePort (IN PVOID ObjectBody
);
102 /* Code in ntoskrnl/lpc/queue.c */
105 EiEnqueueConnectMessagePort (IN OUT PEPORT Port
,
106 IN PQUEUEDMESSAGE Message
);
108 EiEnqueueMessagePort (IN OUT PEPORT Port
,
109 IN PQUEUEDMESSAGE Message
);
111 EiEnqueueMessageAtHeadPort (IN OUT PEPORT Port
,
112 IN PQUEUEDMESSAGE Message
);
115 EiDequeueConnectMessagePort (IN OUT PEPORT Port
);
116 PQUEUEDMESSAGE STDCALL
117 EiDequeueMessagePort (IN OUT PEPORT Port
);
119 /* Code in ntoskrnl/lpc/create.c */
122 NiCreatePort (PVOID ObjectBody
,
125 POBJECT_ATTRIBUTES ObjectAttributes
);
127 /* Code in ntoskrnl/lpc/port.c */
130 NiInitializePort (IN OUT PEPORT Port
);
134 extern POBJECT_TYPE ExPortType
;
135 extern ULONG EiNextLpcMessageId
;
137 /* Code in ntoskrnl/lpc/reply.c */
140 EiReplyOrRequestPort (IN PEPORT Port
,
141 IN PLPC_MESSAGE LpcReply
,
142 IN ULONG MessageType
,
146 #endif /* __INCLUDE_INTERNAL_PORT_H */