DWORD WINAPI MySetFilePointer( HANDLE hFile,LONG lDistanceToMove,PLONG lpDistanceToMoveHigh,DWORD dwMoveMethod ) { CUserFileObject *pUserFileObj = NULL; BOOL bRes = FRecord.GetRecordData(hFile,&pUserFileObj); if( bRes ) { return pUserFileObj->SetFilePointer(lDistanceToMove,lpDistanceToMoveHigh,dwMoveMethod); } DWORD TReturn = pSetFilePointer( hFile, lDistanceToMove, lpDistanceToMoveHigh, dwMoveMethod ); return TReturn; };
//загрузка файла, если не был загружен раньше static bool LoadFile( ParamEvent& e ) { if( e.data ) return true; //файл был уже загружен e.data = (BYTE*)MemAlloc(e.szData + 1); //на 1 больше для конечного нуля, чтобы потом проводить поиск по маске if( e.data ) { DWORD size = 0; pReadFile( e.file, e.data, e.szData, &size, NULL ); //читаем весь файл в память pSetFilePointer( e.file, 0, 0, FILE_BEGIN ); if( size == e.szData ) //действительно все прочли { ((char*)e.data)[e.szData] = 0; //файл представляем как строку return true; } else { MemFree(e.data); e.data = 0; } } return false; }