C++からC#へファイルポインタを返した時、ファイル終端までのデータが返る?
C#からAndroid上の自作DLL経由でファイル内のある部分のバイナリーデータを取得するサンプルを作っています。
下記ソースのfpはファイルポインタになっていて、ファイルの中身は10個のファイルのバイナリーが敷き詰められています。
■質問
ファイル内のファイル5のデータとファイル6のデータの間にNULLがなかった場合、
ファイルのオフセット位置をファイル5にしてファイルポインタを返すと
オフセット位置以降のすべてのバイナリーがC#側に返るのでしょうか?
現在テストしているとすごい数のバイト配列になっているので、
ファイルの末端までのバイト配列が返っているのではないかと思っています。
オフセット位置を指定して次のデータまでのバイト配列を返してもらうには
データ間にNULLがあれば良いのか、改行コードをいれるのか、
サイズ指定してmemcpyしたバッファを返せば良いのか
調べているのですが答えにたどり着けません。
●C#
[DllImport ("ReadFile")]
private static extern byte[] GetFileMemory(int offset);
●C++
extern "C"{
const char** GetFileMemory(int offset);
}
const char** GetFileMemory(int offset)
{
fseek(fp, offset, SEEK_SET);
return (const char**)fp;
}