Как ПРАВИЛЬНО загрузить структуры из файла?
Исходник: http://sourceforge.net/projects/regshot
В общем:
Код | BOOL LoadHive(/*...*/LPHEADFILE FAR * lplpHeadFile,LPSTR FAR * lpHive) { //... *lpHive=MYALLOC(nFileSize);
DWORD nBase=(DWORD)(*lpHive);//??????????????// Вот это косяк! Начало
//nOffSet--начало записи структур в файле *lplpHeadFile=(LPHEADFILE)(nBase+nOffSet);//??????????????? Продолжение
//Далее содержимое файла записывается в буфер lpHive
ReAlignFile(*lplpHeadFile, nBase);//????????????????? }
//-------------------------------------------------------------- //ReAlign file,walkthrough chain void CFileshot::ReAlignFile(LPHEADFILE lpHF, DWORD nBase) { LPDWORD lp; for(LPHEADFILE lphf = lpHF; lphf != NULL; lphf = lphf->lpnextheadfile) { lp = (LPDWORD)lphf; if((*lp) != 0) { (*lp) += nBase; lp++; } if((*lp) != 0) (*lp) += nBase; if(lphf->lpfilecontent != NULL)//I wouldn't find crash bug(loadhive->readfile) in
1.8.0 if I had added it in that version ReAlignFileContent(lphf->lpfilecontent, nBase); } }
|
|