MSDNには「ファイルのサイズを返します。」としか書いてないが、実は今読める分のサイズが返ってくるだけで、必ずしもファイルサイズを表してるわけではない。
なので返ってくる値が0になるまで繰り返し読み込む必要がある
CInternetFile *p_if_obj;
p_if_obj = m_ftpConP->OpenFile(pstrRemoteFile);
if( NULL == p_if_obj ){
return FALSE;
}
long total_size = 0;
while(1){
long size = (long)p_if_obj->GetLength();
if( 0 == size ){
break;
}
if( max_size < (total_size+size) ){
return FALSE;
}
if( NULL == p_if_obj->Read((char*)p_out+total_size,size) ){
m_ftpConP->Close();
return FALSE;
}
total_size += size;
}
m_ftpConP->Close();
ネタ元