typedef struct _ZONEINFO {
char CharacterName[64];
char ZoneNameShort[32];
char ZoneNameLong[128];
char something[150];
unsigned char UnknownByte1;
unsigned char UnknownByte2;
char Unused1[3];
unsigned char UnknownByte3;
char Unused2[3];
unsigned char UnknownByte4;
char Unused3[4];
int UnknownInt1;
char Unused4[12];
float UnknownFloat1;
char Unused5[12];
float UnknownFloat2;
unsigned char UnknownByte5;
char Unused6[49];
unsigned char UnknownByte6;
char Unused7;
int UnknownInt2;
int UnknownInt3;
int UnknownInt4;
float ZoneExpModifier; // exp modifier
int UnknownInt5;
int UnknownInt6;
int UnknownInt7;
int UnknownInt8;
float UnknownFloat4;
float UnknownFloat5;
float UnknownFloat6;
char Unused8[24];
int UnknownInt9;
char Unused9[27];
} ZONEINFO, *PZONEINFO;
The struct is basically complete, types determined by usage of that position in memory. The Unused spots are not used by the client, although they may contain data used by the server. Yes the character name is your character. The exp modifier display using %.2f .. 0.75 is base, anything higher is bonus (0.80 would be 5% bonus, 0.85 would be 10% bonus, etc) and anything lower is a penalty (0.70 is 5% penalty, etc).
Anyway, I spent very little time figuring out unknowns but this is the basic structure, I figure if anyone really wants to use it they can help too =)
Current memory location of this struct is 0x7D467C as of Jan 28, use any time after zoning.

