One question: Why do you need it as a data buffer? For most intents and purposes, I'd expect that just casting the address of the struct to BYTE * or unsigned char * will be sufficient if you need to...