Hi,
I've add the following line to my test driver:
extern __attribute__((dllimport)) POBJECT_TYPE* ExEventObjectType;
DbgPrint("%x %x %x %x\n", ExEventObjectType, *(PULONG)ExEventObjectType, MmGetSystemRoutineAddress(&NameU), *(PULONG)MmGetSystemRoutineAddress(&NameU));
Running on W2K, I get this result:
GCC: 81ebd540 81ebd440 8047a888 81ebd540
MSVC: 8047a888 81ebd540 8047a888 81ebd540
Running on ROS:
GCC: c0692ef8 54545645 c00e0760 c0692ef8
MSVC: c00e0760 c0692ef8 c00e0760 c0692ef8
It seems that GCC and MSVC does handle imported data symbols different. In MSVC is an imported data symbol a pointer to the variable and in GCC the value of the variable.
- Hartmut