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 */