VERY late, but here's disk size in bytes for greater than 32 bits using only 32 bit integers:
unsigned int low;
unsigned int high;
low = info->id_NumBlocks % 100000;
high = info->id_NumBlocks / 100000;
low *= info->id_BytesPerBlock;
high *= info->id_BytesPerBlock;
high += low / 100000;
low = low % 100000;
printf("Size: %d%d bytes.\n", high, low);