2 * PROJECT: ReactOS Kernel
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: ntoskrnl/lpc/port.c
5 * PURPOSE: Local Procedure Call: Port Management
6 * PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org)
9 /* INCLUDES ******************************************************************/
15 /* GLOBALS *******************************************************************/
17 POBJECT_TYPE LpcPortObjectType
;
18 ULONG LpcpMaxMessageSize
;
19 PAGED_LOOKASIDE_LIST LpcpMessagesLookaside
;
20 KGUARDED_MUTEX LpcpLock
;
21 ULONG LpcpTraceLevel
= 0;
22 ULONG LpcpNextMessageId
= 1, LpcpNextCallbackId
= 1;
24 static GENERIC_MAPPING LpcpPortMapping
=
27 STANDARD_RIGHTS_WRITE
,
32 /* PRIVATE FUNCTIONS *********************************************************/
39 OBJECT_TYPE_INITIALIZER ObjectTypeInitializer
;
42 /* Setup the LPC Lock */
43 KeInitializeGuardedMutex(&LpcpLock
);
45 /* Create the Port Object Type */
46 RtlZeroMemory(&ObjectTypeInitializer
, sizeof(ObjectTypeInitializer
));
47 RtlInitUnicodeString(&Name
, L
"Port");
48 ObjectTypeInitializer
.Length
= sizeof(ObjectTypeInitializer
);
49 ObjectTypeInitializer
.DefaultNonPagedPoolCharge
= sizeof(LPCP_PORT_OBJECT
);
50 ObjectTypeInitializer
.DefaultPagedPoolCharge
= sizeof(LPCP_NONPAGED_PORT_QUEUE
);
51 ObjectTypeInitializer
.GenericMapping
= LpcpPortMapping
;
52 ObjectTypeInitializer
.PoolType
= PagedPool
;
53 ObjectTypeInitializer
.UseDefaultObject
= TRUE
;
54 ObjectTypeInitializer
.CloseProcedure
= LpcpClosePort
;
55 ObjectTypeInitializer
.DeleteProcedure
= LpcpDeletePort
;
56 ObjectTypeInitializer
.ValidAccessMask
= PORT_ALL_ACCESS
;
57 ObCreateObjectType(&Name
,
58 &ObjectTypeInitializer
,
62 /* Allocate the LPC lookaside list */
63 LpcpMaxMessageSize
= LPCP_MAX_MESSAGE_SIZE
;
64 ExInitializePagedLookasideList(&LpcpMessagesLookaside
,
76 /* PUBLIC FUNCTIONS **********************************************************/
80 NtImpersonateClientOfPort(IN HANDLE PortHandle
,
81 IN PPORT_MESSAGE ClientMessage
)
84 return STATUS_NOT_IMPLEMENTED
;
89 NtQueryPortInformationProcess(VOID
)
91 /* This is all this function does */
92 return STATUS_UNSUCCESSFUL
;
97 NtQueryInformationPort(IN HANDLE PortHandle
,
98 IN PORT_INFORMATION_CLASS PortInformationClass
,
99 OUT PVOID PortInformation
,
100 IN ULONG PortInformationLength
,
101 OUT PULONG ReturnLength
)
104 return STATUS_NOT_IMPLEMENTED
;