RE^2:ビットマップアーカイブファイルの展開についての質問 (Kabo) 2000/10/03 02:34
 質問にお答えいただき、ありがとうございます。

>どのようにバッファを確保しているのでしょうか?

 「Win32 API オフィシャルリファレンス」に
「Win32環境では、グローバルヒープとローカルヒープの区別はありません。」
 と書かれていたので Win32API の GlobalAlloc関数 を使っています。

 そして、ソースファイルは、
/*-------------------------------------------------------------------------------*/
__declspec(dllexport) int PASCAL GetFile
(LPSTR src, long len, char* dest, unsigned int flag,
int PASCAL ProgressCallback(int,int,long), long lData )
{
HANDLE fp;


dest = (char*)GlobalAlloc( GPTR, index->length );
fp = ax_Open( src );
ax_lSeek( fp, index->offset );
ax_Read( fp, dest, index->length );
ax_Close( fp );


}

BOOL ax_Read( HANDLE hfp, char* buf, int ReadSize )
{
DWORD dw;

ReadFile(hfp, buf, ReadSize, &dw, NULL);

if( ReadSize != (int)dw )
return FALSE;
else
return TRUE;
}
/*----------------------------------------------------------------------------*/
※index構造体は各内部ファイルの
length: ファイルサイズ
offset: ファイル内の位置
を表しています。
/*----------------------------------------------------------------------------*/

となっています。チェックのために他にいろいろと書いてありますが
(Jy.さんへのレスを参照して下さい)解り易くするため省略しました。


>LocalAllocでLMEM_FIXEDを指定しているなら
>*dest と バッファへのポインタは同じですけど。

 はい。指定しています。おまけに、0 で初期化しています。
 もしかして、いけないのでしょうか?


--「RE^2:ビットマップアーカイブファイルの展開についての質問」に対するコメント--
タイトル(Subject):
お名前(Your name):
Mail address:
Password: :入力しておくとあとで削除できます
Your message:




7thBridge P ver0.26 (c)Takechin