やっぱり無理なんですかね?
void ( void * a,size_t count,size_t size,?? kata )
{
 a=(kata *)malloc(count * size);
}

のようにしたいのですが,kataの部分がどうやって送っていいのかわかりません。
void *ではないですしね。