Это общий шаблон, используемый для динамического распределения элементов:
int items = 5;
int cb = sizeof(FILEGROUPDESCRIPTOR) + (items - 1) * sizeof(FILEDESCRIPTOR);
LPFILEGROUPDESCRIPTOR lp = (LPFILEGROUPDESCRIPTOR)new BYTE[cb];
lp->cItems = items;
for(int i = 0; i < items; i++)
{
lp->fgd[i].blah = blah;
}