[ros-dev] Re:[ros-svn] [ion] 12748: Fix incorrect LPC Object
export...we export pointers not the object itself! Also remove
more TIME stuf
Filip Navara
xnavara at volny.cz
Mon Jan 3 16:06:06 CET 2005
Filip Navara wrote:
> ea at iol.it wrote:
>
>>> Fix incorrect LPC Object export...we export pointers not the object
>>> itself!
>>
>>
>> Why?
>>
>> Aren't DATA symbols exported by DLLs pointers?
>>
>>
> Yes, they are! Alex's change is WRONG!
The attached patch reverts the incorrect changes in Alex's patch.
-------------- next part --------------
Index: ps/process.c
===================================================================
--- ps/process.c (revision 12754)
+++ ps/process.c (working copy)
@@ -745,7 +745,7 @@
{
Status = ObReferenceObjectByHandle(DebugPort,
PORT_ALL_ACCESS,
- LpcPortObjectType,
+ &LpcPortObjectType,
UserMode,
(PVOID*)&pDebugPort,
NULL);
@@ -767,7 +767,7 @@
{
Status = ObReferenceObjectByHandle(ExceptionPort,
PORT_ALL_ACCESS,
- LpcPortObjectType,
+ &LpcPortObjectType,
UserMode,
(PVOID*)&pExceptionPort,
NULL);
Index: ps/kill.c
===================================================================
--- ps/kill.c (revision 12754)
+++ ps/kill.c (working copy)
@@ -448,7 +448,7 @@
Status = ObReferenceObjectByHandle(PortHandle,
PORT_ALL_ACCESS,
- LpcPortObjectType,
+ &LpcPortObjectType,
KeGetCurrentThread()->PreviousMode,
(PVOID*)&TerminationPort,
NULL);
Index: include/internal/port.h
===================================================================
--- include/internal/port.h (revision 12754)
+++ include/internal/port.h (working copy)
@@ -140,7 +140,7 @@
NTSTATUS
NiInitPort (VOID);
-extern POBJECT_TYPE LpcPortObjectType;
+extern OBJECT_TYPE LpcPortObjectType;
extern ULONG LpcpNextMessageId;
extern FAST_MUTEX LpcpLock;
Index: lpc/create.c
===================================================================
--- lpc/create.c (revision 12754)
+++ lpc/create.c (working copy)
@@ -134,7 +134,7 @@
/* Ask Ob to create the object */
Status = ObCreateObject (ExGetPreviousMode(),
- LpcPortObjectType,
+ &LpcPortObjectType,
ObjectAttributes,
ExGetPreviousMode(),
NULL,
Index: lpc/port.c
===================================================================
--- lpc/port.c (revision 12754)
+++ lpc/port.c (working copy)
@@ -21,7 +21,7 @@
/* GLOBALS *******************************************************************/
-POBJECT_TYPE LpcPortObjectType = 0;
+OBJECT_TYPE LpcPortObjectType;
ULONG LpcpNextMessageId = 0; /* 0 is not a valid ID */
FAST_MUTEX LpcpLock; /* global internal sync in LPC facility */
@@ -37,32 +37,28 @@
NTSTATUS INIT_FUNCTION
NiInitPort (VOID)
{
- /* Allocate Memory for the LPC Object */
- LpcPortObjectType = ExAllocatePool(NonPagedPool, sizeof(OBJECT_TYPE));
- RtlZeroMemory (LpcPortObjectType, sizeof (OBJECT_TYPE));
+ RtlRosInitUnicodeStringFromLiteral(&LpcPortObjectType.TypeName,L"Port");
- RtlRosInitUnicodeStringFromLiteral(&LpcPortObjectType->TypeName,L"Port");
-
- LpcPortObjectType->Tag = TAG('L', 'P', 'R', 'T');
- LpcPortObjectType->MaxObjects = ULONG_MAX;
- LpcPortObjectType->MaxHandles = ULONG_MAX;
- LpcPortObjectType->TotalObjects = 0;
- LpcPortObjectType->TotalHandles = 0;
- LpcPortObjectType->PagedPoolCharge = 0;
- LpcPortObjectType->NonpagedPoolCharge = sizeof(EPORT);
- LpcPortObjectType->Mapping = &ExpPortMapping;
- LpcPortObjectType->Dump = NULL;
- LpcPortObjectType->Open = NULL;
- LpcPortObjectType->Close = NiClosePort;
- LpcPortObjectType->Delete = NiDeletePort;
- LpcPortObjectType->Parse = NULL;
- LpcPortObjectType->Security = NULL;
- LpcPortObjectType->QueryName = NULL;
- LpcPortObjectType->OkayToClose = NULL;
- LpcPortObjectType->Create = NiCreatePort;
- LpcPortObjectType->DuplicationNotify = NULL;
+ LpcPortObjectType.Tag = TAG('L', 'P', 'R', 'T');
+ LpcPortObjectType.MaxObjects = ULONG_MAX;
+ LpcPortObjectType.MaxHandles = ULONG_MAX;
+ LpcPortObjectType.TotalObjects = 0;
+ LpcPortObjectType.TotalHandles = 0;
+ LpcPortObjectType.PagedPoolCharge = 0;
+ LpcPortObjectType.NonpagedPoolCharge = sizeof(EPORT);
+ LpcPortObjectType.Mapping = &ExpPortMapping;
+ LpcPortObjectType.Dump = NULL;
+ LpcPortObjectType.Open = NULL;
+ LpcPortObjectType.Close = NiClosePort;
+ LpcPortObjectType.Delete = NiDeletePort;
+ LpcPortObjectType.Parse = NULL;
+ LpcPortObjectType.Security = NULL;
+ LpcPortObjectType.QueryName = NULL;
+ LpcPortObjectType.OkayToClose = NULL;
+ LpcPortObjectType.Create = NiCreatePort;
+ LpcPortObjectType.DuplicationNotify = NULL;
- ObpCreateTypeObject(LpcPortObjectType);
+ ObpCreateTypeObject(&LpcPortObjectType);
LpcpNextMessageId = 0;
Index: lpc/query.c
===================================================================
--- lpc/query.c (revision 12754)
+++ lpc/query.c (working copy)
@@ -50,7 +50,7 @@
Status = ObReferenceObjectByHandle (PortHandle,
PORT_ALL_ACCESS, /* AccessRequired */
- LpcPortObjectType,
+ &LpcPortObjectType,
UserMode,
(PVOID *) & Port,
NULL);
Index: lpc/complete.c
===================================================================
--- lpc/complete.c (revision 12754)
+++ lpc/complete.c (working copy)
@@ -46,7 +46,7 @@
*/
Status = ObReferenceObjectByHandle (hServerSideCommPort,
PORT_ALL_ACCESS,
- LpcPortObjectType,
+ &LpcPortObjectType,
UserMode,
(PVOID*)&ReplyPort,
NULL);
Index: lpc/connect.c
===================================================================
--- lpc/connect.c (revision 12754)
+++ lpc/connect.c (working copy)
@@ -66,7 +66,7 @@
* Create a port to represent our side of the connection
*/
Status = ObCreateObject (KernelMode,
- LpcPortObjectType,
+ &LpcPortObjectType,
NULL,
KernelMode,
NULL,
@@ -333,7 +333,7 @@
0,
NULL,
PORT_ALL_ACCESS, /* DesiredAccess */
- LpcPortObjectType,
+ &LpcPortObjectType,
UserMode,
NULL,
(PVOID*)&NamedPort);
@@ -547,7 +547,7 @@
Status = ObReferenceObjectByHandle(NamedPortHandle,
PORT_ALL_ACCESS,
- LpcPortObjectType,
+ &LpcPortObjectType,
UserMode,
(PVOID*)&NamedPort,
NULL);
@@ -563,7 +563,7 @@
if (AcceptIt)
{
Status = ObCreateObject(ExGetPreviousMode(),
- LpcPortObjectType,
+ &LpcPortObjectType,
NULL,
ExGetPreviousMode(),
NULL,
Index: lpc/send.c
===================================================================
--- lpc/send.c (revision 12754)
+++ lpc/send.c (working copy)
@@ -180,7 +180,7 @@
Status = ObReferenceObjectByHandle(PortHandle,
PORT_ALL_ACCESS,
- LpcPortObjectType,
+ &LpcPortObjectType,
UserMode,
(PVOID*)&Port,
NULL);
@@ -231,7 +231,7 @@
Status = ObReferenceObjectByHandle(PortHandle,
PORT_ALL_ACCESS,
- LpcPortObjectType,
+ &LpcPortObjectType,
UserMode,
(PVOID*)&Port,
NULL);
Index: lpc/reply.c
===================================================================
--- lpc/reply.c (revision 12754)
+++ lpc/reply.c (working copy)
@@ -88,7 +88,7 @@
Status = ObReferenceObjectByHandle(PortHandle,
PORT_ALL_ACCESS, /* AccessRequired */
- LpcPortObjectType,
+ &LpcPortObjectType,
UserMode,
(PVOID*)&Port,
NULL);
@@ -154,7 +154,7 @@
Status = ObReferenceObjectByHandle(PortHandle,
PORT_ALL_ACCESS,
- LpcPortObjectType,
+ &LpcPortObjectType,
UserMode,
(PVOID*)&Port,
NULL);
More information about the Ros-dev
mailing list