I have this struct:
MyStruct *myStruct = (MyStruct*) BINDATA;
myStruct->a; //gave me 0x00
myStruct->len; //gave me 0x03
BYTE *data you should use
BYTE data or (if your compiler doesn't like this)
BYTE data. The difference between pointer and array here is crucial - array is "data that is right here" while pointer is "data somewhere else" which is not your case.