昨日、自作のアーカイバとその解凍ツールが完成しました。
そのアーカイバを使って、今作成しているゲームの外部データをアーカイブ化しました。
そのアーカイブデータを読み込んで、今までどおり画像や音声が表示できるかどうか試しているのですが、
読み込む方法として、メモリマップドファイルの技術を使って読み込もうとしています。
一応、マッピングオブジェクトを作成するところまでは上手く言ったんですが、
MapViewOfFile関数で、メモリをマップしようとしたときに、正しくそのポインタが取得できずに困っています。
MapViewOfFile関数の使い方は下記のように使用しているのですが、何か間違っているでしょうか?
char *p;
HANDLE mh,fh;
int point;
int size;
fh=CreateFile()//省略。ここでアーカイブファイルのハンドルを取得
mh=CreateFileMapping()//省略。マッピングオブジェクト作成
point=独自関数()//ここで、アーカイブファイル内の読み込みたいデータの位置(バイト)を取得
size=独自関数()//ここで、アーカイブファイル内の読み込みたいデータのサイズを取得
p=(char *)MapViewOfFile(mh,FILE_MAP_READ,0,point,size);
個人的にはMapViewOfFileの第3、4、5引数が怪しいと思っています。
どなたか分かる方、ご教授お願い致します。
追記:
3,4,5の引数を全て0にして、ファイル全体をマッピングすると、ポインタは取得できます。
つまり、アーカイブファイル内の指定の位置のポインタを取得しようとするとエラーになっているようです。
