mirror of
https://github.com/reactos/reactos.git
synced 2024-10-05 00:43:21 +00:00
Normalize private symbols in LPC, plus minor changes/adds.
svn path=/trunk/; revision=11512
This commit is contained in:
parent
430b802b99
commit
5f451aa443
|
@ -12,6 +12,8 @@
|
||||||
#define NTOS_MODE_KERNEL
|
#define NTOS_MODE_KERNEL
|
||||||
#include <ntos.h>
|
#include <ntos.h>
|
||||||
|
|
||||||
|
#define TAG_OBJECT_TYPE TAG('O', 'b', 'j', 'T')
|
||||||
|
|
||||||
struct _EPROCESS;
|
struct _EPROCESS;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
|
|
|
@ -26,11 +26,7 @@ typedef struct _EPORT
|
||||||
|
|
||||||
ULONG MaxDataLength;
|
ULONG MaxDataLength;
|
||||||
ULONG MaxConnectInfoLength;
|
ULONG MaxConnectInfoLength;
|
||||||
|
ULONG MaxPoolUsage; /* size of NP zone */
|
||||||
/*
|
|
||||||
* List of processes that can receive connection requests on this port.
|
|
||||||
*/
|
|
||||||
LIST_ENTRY ListenerListHead;
|
|
||||||
} EPORT, * PEPORT;
|
} EPORT, * PEPORT;
|
||||||
|
|
||||||
|
|
||||||
|
@ -88,6 +84,12 @@ LpcSendTerminationPort (PEPORT Port,
|
||||||
#define EPORT_CONNECTED_SERVER (6)
|
#define EPORT_CONNECTED_SERVER (6)
|
||||||
#define EPORT_DISCONNECTED (7)
|
#define EPORT_DISCONNECTED (7)
|
||||||
|
|
||||||
|
/* Pool Tags */
|
||||||
|
|
||||||
|
#define TAG_LPC_MESSAGE TAG('L', 'p', 'c', 'M')
|
||||||
|
#define TAG_LPC_ZONE TAG('L', 'p', 'c', 'Z')
|
||||||
|
|
||||||
|
|
||||||
typedef struct _QUEUEDMESSAGE
|
typedef struct _QUEUEDMESSAGE
|
||||||
{
|
{
|
||||||
PEPORT Sender;
|
PEPORT Sender;
|
||||||
|
@ -139,7 +141,8 @@ NTSTATUS
|
||||||
NiInitPort (VOID);
|
NiInitPort (VOID);
|
||||||
|
|
||||||
extern POBJECT_TYPE ExPortType;
|
extern POBJECT_TYPE ExPortType;
|
||||||
extern ULONG EiNextLpcMessageId;
|
extern ULONG LpcpNextMessageId;
|
||||||
|
extern FAST_MUTEX LpcpLock;
|
||||||
|
|
||||||
/* Code in ntoskrnl/lpc/reply.c */
|
/* Code in ntoskrnl/lpc/reply.c */
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: create.c,v 1.17 2004/08/15 16:39:06 chorns Exp $
|
/* $Id: create.c,v 1.18 2004/10/31 20:27:08 ea Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -32,7 +32,7 @@ LpcpVerifyCreateParameters (IN PHANDLE PortHandle,
|
||||||
IN POBJECT_ATTRIBUTES ObjectAttributes,
|
IN POBJECT_ATTRIBUTES ObjectAttributes,
|
||||||
IN ULONG MaxConnectInfoLength,
|
IN ULONG MaxConnectInfoLength,
|
||||||
IN ULONG MaxDataLength,
|
IN ULONG MaxDataLength,
|
||||||
IN ULONG Reserved)
|
IN ULONG MaxPoolUsage)
|
||||||
{
|
{
|
||||||
if (NULL == PortHandle)
|
if (NULL == PortHandle)
|
||||||
{
|
{
|
||||||
|
@ -58,8 +58,8 @@ LpcpVerifyCreateParameters (IN PHANDLE PortHandle,
|
||||||
{
|
{
|
||||||
return (STATUS_INVALID_PARAMETER_4);
|
return (STATUS_INVALID_PARAMETER_4);
|
||||||
}
|
}
|
||||||
/* FIXME: some checking is done also on Reserved, but
|
/* TODO: some checking is done also on MaxPoolUsage
|
||||||
* not in public (free/checked) versions. */
|
* to avoid choking the executive */
|
||||||
return (STATUS_SUCCESS);
|
return (STATUS_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,7 +105,7 @@ NiCreatePort (PVOID ObjectBody,
|
||||||
* ObjectAttributes,
|
* ObjectAttributes,
|
||||||
* MaxConnectInfoLength,
|
* MaxConnectInfoLength,
|
||||||
* MaxDataLength,
|
* MaxDataLength,
|
||||||
* Reserved
|
* MaxPoolUsage: size of NP zone the NP part of msgs is kept in
|
||||||
*
|
*
|
||||||
* RETURN VALUE
|
* RETURN VALUE
|
||||||
*/
|
*/
|
||||||
|
@ -114,7 +114,7 @@ NtCreatePort (PHANDLE PortHandle,
|
||||||
POBJECT_ATTRIBUTES ObjectAttributes,
|
POBJECT_ATTRIBUTES ObjectAttributes,
|
||||||
ULONG MaxConnectInfoLength,
|
ULONG MaxConnectInfoLength,
|
||||||
ULONG MaxDataLength,
|
ULONG MaxDataLength,
|
||||||
ULONG Reserved)
|
ULONG MaxPoolUsage)
|
||||||
{
|
{
|
||||||
PEPORT Port;
|
PEPORT Port;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
@ -126,7 +126,7 @@ NtCreatePort (PHANDLE PortHandle,
|
||||||
ObjectAttributes,
|
ObjectAttributes,
|
||||||
MaxConnectInfoLength,
|
MaxConnectInfoLength,
|
||||||
MaxDataLength,
|
MaxDataLength,
|
||||||
Reserved);
|
MaxPoolUsage);
|
||||||
if (STATUS_SUCCESS != Status)
|
if (STATUS_SUCCESS != Status)
|
||||||
{
|
{
|
||||||
return (Status);
|
return (Status);
|
||||||
|
@ -162,6 +162,7 @@ NtCreatePort (PHANDLE PortHandle,
|
||||||
Status = NiInitializePort (Port, EPORT_TYPE_SERVER_RQST_PORT, NULL);
|
Status = NiInitializePort (Port, EPORT_TYPE_SERVER_RQST_PORT, NULL);
|
||||||
Port->MaxConnectInfoLength = PORT_MAX_DATA_LENGTH;
|
Port->MaxConnectInfoLength = PORT_MAX_DATA_LENGTH;
|
||||||
Port->MaxDataLength = PORT_MAX_MESSAGE_LENGTH;
|
Port->MaxDataLength = PORT_MAX_MESSAGE_LENGTH;
|
||||||
|
Port->MaxPoolUsage = MaxPoolUsage;
|
||||||
|
|
||||||
ObDereferenceObject (Port);
|
ObDereferenceObject (Port);
|
||||||
|
|
||||||
|
@ -183,7 +184,7 @@ NtCreatePort (PHANDLE PortHandle,
|
||||||
* ObjectAttributes,
|
* ObjectAttributes,
|
||||||
* MaxConnectInfoLength,
|
* MaxConnectInfoLength,
|
||||||
* MaxDataLength,
|
* MaxDataLength,
|
||||||
* Reserved
|
* MaxPoolUsage
|
||||||
*
|
*
|
||||||
* RETURN VALUE
|
* RETURN VALUE
|
||||||
*/
|
*/
|
||||||
|
@ -192,7 +193,7 @@ NtCreateWaitablePort (OUT PHANDLE PortHandle,
|
||||||
IN POBJECT_ATTRIBUTES ObjectAttributes,
|
IN POBJECT_ATTRIBUTES ObjectAttributes,
|
||||||
IN ULONG MaxConnectInfoLength,
|
IN ULONG MaxConnectInfoLength,
|
||||||
IN ULONG MaxDataLength,
|
IN ULONG MaxDataLength,
|
||||||
IN ULONG Reserved)
|
IN ULONG MaxPoolUsage)
|
||||||
{
|
{
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
@ -201,7 +202,7 @@ NtCreateWaitablePort (OUT PHANDLE PortHandle,
|
||||||
ObjectAttributes,
|
ObjectAttributes,
|
||||||
MaxConnectInfoLength,
|
MaxConnectInfoLength,
|
||||||
MaxDataLength,
|
MaxDataLength,
|
||||||
Reserved);
|
MaxPoolUsage);
|
||||||
if (STATUS_SUCCESS != Status)
|
if (STATUS_SUCCESS != Status)
|
||||||
{
|
{
|
||||||
return (Status);
|
return (Status);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: port.c,v 1.19 2004/08/15 16:39:06 chorns Exp $
|
/* $Id: port.c,v 1.20 2004/10/31 20:27:08 ea Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -22,7 +22,8 @@
|
||||||
/* GLOBALS *******************************************************************/
|
/* GLOBALS *******************************************************************/
|
||||||
|
|
||||||
POBJECT_TYPE ExPortType = NULL;
|
POBJECT_TYPE ExPortType = NULL;
|
||||||
ULONG EiNextLpcMessageId = 0;
|
ULONG LpcpNextMessageId = 0; /* 0 is not a valid ID */
|
||||||
|
FAST_MUTEX LpcpLock; /* global internal sync in LPC facility */
|
||||||
|
|
||||||
static GENERIC_MAPPING ExpPortMapping = {
|
static GENERIC_MAPPING ExpPortMapping = {
|
||||||
STANDARD_RIGHTS_READ,
|
STANDARD_RIGHTS_READ,
|
||||||
|
@ -36,7 +37,7 @@ static GENERIC_MAPPING ExpPortMapping = {
|
||||||
NTSTATUS INIT_FUNCTION
|
NTSTATUS INIT_FUNCTION
|
||||||
NiInitPort (VOID)
|
NiInitPort (VOID)
|
||||||
{
|
{
|
||||||
ExPortType = ExAllocatePool(NonPagedPool,sizeof(OBJECT_TYPE));
|
ExPortType = ExAllocatePoolWithTag(NonPagedPool,sizeof(OBJECT_TYPE),TAG_OBJECT_TYPE);
|
||||||
|
|
||||||
RtlRosInitUnicodeStringFromLiteral(&ExPortType->TypeName,L"Port");
|
RtlRosInitUnicodeStringFromLiteral(&ExPortType->TypeName,L"Port");
|
||||||
|
|
||||||
|
@ -61,7 +62,9 @@ NiInitPort (VOID)
|
||||||
|
|
||||||
ObpCreateTypeObject(ExPortType);
|
ObpCreateTypeObject(ExPortType);
|
||||||
|
|
||||||
EiNextLpcMessageId = 0;
|
LpcpNextMessageId = 0;
|
||||||
|
|
||||||
|
ExInitializeFastMutex (& LpcpLock);
|
||||||
|
|
||||||
return(STATUS_SUCCESS);
|
return(STATUS_SUCCESS);
|
||||||
}
|
}
|
||||||
|
@ -77,6 +80,9 @@ NiInitPort (VOID)
|
||||||
*
|
*
|
||||||
* ARGUMENTS
|
* ARGUMENTS
|
||||||
* Port Pointer to an EPORT object to initialize.
|
* Port Pointer to an EPORT object to initialize.
|
||||||
|
* Type connect (RQST), or communication port (COMM)
|
||||||
|
* Parent OPTIONAL connect port a communication port
|
||||||
|
* is created from
|
||||||
*
|
*
|
||||||
* RETURN VALUE
|
* RETURN VALUE
|
||||||
* STATUS_SUCCESS if initialization succedeed. An error code
|
* STATUS_SUCCESS if initialization succedeed. An error code
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: reply.c,v 1.22 2004/09/13 19:10:45 gvg Exp $
|
/* $Id: reply.c,v 1.23 2004/10/31 20:27:08 ea Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -17,8 +17,6 @@
|
||||||
|
|
||||||
/* GLOBALS *******************************************************************/
|
/* GLOBALS *******************************************************************/
|
||||||
|
|
||||||
#define TAG_LPC_MESSAGE TAG('L', 'P', 'C', 'M')
|
|
||||||
|
|
||||||
/* FUNCTIONS *****************************************************************/
|
/* FUNCTIONS *****************************************************************/
|
||||||
|
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
|
@ -58,7 +56,7 @@ EiReplyOrRequestPort (IN PEPORT Port,
|
||||||
MessageReply->Message.ClientId.UniqueProcess = PsGetCurrentProcessId();
|
MessageReply->Message.ClientId.UniqueProcess = PsGetCurrentProcessId();
|
||||||
MessageReply->Message.ClientId.UniqueThread = PsGetCurrentThreadId();
|
MessageReply->Message.ClientId.UniqueThread = PsGetCurrentThreadId();
|
||||||
MessageReply->Message.MessageType = MessageType;
|
MessageReply->Message.MessageType = MessageType;
|
||||||
MessageReply->Message.MessageId = InterlockedIncrement((LONG *)&EiNextLpcMessageId);
|
MessageReply->Message.MessageId = InterlockedIncrement((LONG *)&LpcpNextMessageId);
|
||||||
|
|
||||||
KeAcquireSpinLock(&Port->Lock, &oldIrql);
|
KeAcquireSpinLock(&Port->Lock, &oldIrql);
|
||||||
EiEnqueueMessagePort(Port, MessageReply);
|
EiEnqueueMessagePort(Port, MessageReply);
|
||||||
|
|
Loading…
Reference in a new issue