つまりさ、 void * を渡すのは 徹底的に相手に実装を見せない為でしょ?
だから .h ファイルには 関数名しか置かない
そして Cソースファイル中に 構造体とか配列の情報は埋め込んでしまう
 って手法を使ってるわけ

ヘッダファイルに構造体を置いたり、配列のサイズ情報を入れたりはしない