Due dubbi ...

1) nella Serialize, quando scrivi

i<sizeof(aAccelleratorArray);

cosa credi che restituisca la sizeof?

2) nella UnSerialize, hai un puntatore ad un array

LPACCEL aAccelleratorArray;

ma non allochi mai lo spazio per i suoi elementi ... e fra l'altro, dopo aver letto il primo non leggi gli altri ...