Passing voidFunc seems fine/good.
But for address calculation through substraction of address - base it will have to be something different than void*. Shall we use unsigned char * there? Or something different? A new typedef? A system provided one?