У вас должно быть что-то подобное:
// Write
if(ftell(WriteHandle)>BUFFER_MAX) rewind (WriteHandle);
fwrite(WriteHandle,/* ... */);
// Read (assuming binary)
readSize = fread (buffer,1,READ_CHUNK_SIZE,ReadHandle);
if(readSize!=READ_CHUNK_SIZE){
rewind (ReadHandle);
if(fread (buffer+readSize,1,READ_CHUNK_SIZE-readSize,ReadHandle)!=READ_CHUNK_SIZE-readSize)
;// ERROR !
}
Не проверено, но дает представление. Запись должна также обрабатывать регистр BUFFER_MAX
не по модулю WRITE_CHUNK_SIZE
.
Кроме того, вы можете читать только в том случае, если уверены, что данные уже записаны. Но я думаю, вы уже это делаете.