Я пытаюсь сжать файл на месте.
Я заменяю содержимое одного файла содержимым другого, и когда я закончу, я хочу убедиться, что если исходный файл меньше файла dest, файл dest правильно сжимается.
(Почему: поскольку файл dest является резервной копией, а запись на носитель очень дорогая, поэтому я записываю только дельты в резервную копию)
1.) HANDLE hDest =(HANDLE)_get_osfhandle( fileno(backupFile.GetBufferedHandle()) );
2.) DWORD startingSize = GetFileSize(hDest, NULL);
3.) DWORD dwPtr = SetFilePointer(hDest, newSize, NULL, FILE_BEGIN);
4.) int err = GetLastError();
5.) if (dwPtr != INVALID_SET_FILE_POINTER)
6.) { err = SetEndOfFile(hDest);
7.) if(err == 0)
8.) err = GetLastError();
9.) err = SetFileValidData(hDest, newSize);
10.) }
11.) DWORD endingSize = GetFileSize(hDest, NULL);
В строке 8 я получаю сообщение об ошибке 1224 ... Мне интересно, кто-нибудь может сказать мне почему или предложить лучший подход.