Filip Navara schrieb:
ea(a)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!
- Filip
I think that Alex's changes are correct. If Alex's changes are wrong,
all other type object initialisations are also wrong. There is only one
little bug, the EXPORTED/IMPORTED definition is missing.
- Hartmut
Index: ntoskrnl/lpc/port.c
===================================================================
--- ntoskrnl/lpc/port.c (Revision 12753)
+++ ntoskrnl/lpc/port.c (Arbeitskopie)
@@ -21,7 +21,7 @@
/* GLOBALS
*******************************************************************/
-POBJECT_TYPE LpcPortObjectType = 0;
+POBJECT_TYPE EXPORTED LpcPortObjectType = NULL;
ULONG LpcpNextMessageId = 0; /* 0 is not a valid ID */
FAST_MUTEX LpcpLock; /* global internal sync in LPC facility */
Index: ntoskrnl/include/internal/port.h
===================================================================
--- ntoskrnl/include/internal/port.h (Revision 12753)
+++ ntoskrnl/include/internal/port.h (Arbeitskopie)
@@ -140,7 +140,13 @@
NTSTATUS
NiInitPort (VOID);
-extern POBJECT_TYPE LpcPortObjectType;
+#ifdef __NTOSKRNL__
+extern POBJECT_TYPE EXPORTED LpcPortObjectType;
+#else
+/* Usually not necessary, because nobody should include an internal
header from ntoskrnl. */
+extern POBJECT_TYPE IMPORTED LpcPortObjectType;
+#endif
+
extern ULONG LpcpNextMessageId;
extern FAST_MUTEX LpcpLock;