Filip Navara schrieb:
ea@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;