基本的にはFindFirstFile/FindNextFileみたいな構造になると思います。
つまり,
- データは構造体で引き渡し,リクエストする側がメモリを確保する
- 最初のリクエストでハンドル (ID) を発行し,2回目以降はハンドルを元にデータを渡していく
という構造です。
ただし,そもそもどういう使い方をするのかで,上記が必ずしもよいとは限りません。
アクセス先のテーブルが固定されていないのであれば,列名一覧を取得する関数や列のデータを取得する関数,といった形になるでしょうし,
固定されていてもLONGBLOBなどを相手にするのであれば,専用の関数を用意する必要があると思います。