Здравствуйте.
Для дозаписи файлов использую такой код:
HANDLE hFile;
DWORD dwLow,PtrLow,dwError;
LONG dwHei,PtrHei;
hFile=CreateFile(filename,GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile == INVALID_HANDLE_VALUE) return(-1);
dwHei=0; dwLow=SetFilePointer(hFile,0,&dwHei,FILE_END);
if(dwLow == 0xFFFFFFFF && (dwError = GetLastError()) != NO_ERROR)
{
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,dwError,MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),buf,250,NULL);
return(-2);
}
PtrHei=dwHei; PtrLow=dwLow;
WriteFile(hFile,SomeData,SizeData,&dwError,NULL);
CloseHandle(hFile);
if(dwError == 0) return(-3);
Файлы больше 4.2 Гб нормально записываются в Win95 и Win2000, но в Win98 возвращается ошибка (-3).
Это особенность Win98 или ошибка в программе?
На Win98 стоит FAT32.
С уважением
Андрей Тюрин
Здравствуйте and_tjurin, Вы писали:
AT>Здравствуйте.
AT>Для дозаписи файлов использую такой код:
AT>
AT>AT>HANDLE hFile;
AT>DWORD dwLow,PtrLow,dwError;
AT>LONG dwHei,PtrHei;
AT> hFile=CreateFile(filename,GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
AT> if(hFile == INVALID_HANDLE_VALUE) return(-1);
AT> dwHei=0; dwLow=SetFilePointer(hFile,0,&dwHei,FILE_END);
AT> if(dwLow == 0xFFFFFFFF && (dwError = GetLastError()) != NO_ERROR)
AT> {
AT> FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,dwError,MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),buf,250,NULL);
AT> return(-2);
AT> }
AT> PtrHei=dwHei; PtrLow=dwLow;
В этом примере ты не используешь PtrHei (почему не PtrHi?), PtrLow. Зачем засорять пример?
AT>
AT> WriteFile(hFile,SomeData,SizeData,&dwError,NULL);
Если уж приводишь подробный код, то почему не пишешь что такое SizeData?
AT> CloseHandle(hFile);
AT> if(dwError == 0) return(-3);
AT>
AT>Файлы больше 4.2 Гб нормально записываются в Win95 и Win2000, но в Win98 возвращается ошибка (-3).
Если бы проблема была с 95-й, я бы не удивился. А вообще советую проверить условия в которых существуют Win9x.
AT>Это особенность Win98 или ошибка в программе?
AT>На Win98 стоит FAT32.
В общем, если с 95-й проблем нет, ищи отличия в условиях работы 98-й и 95-й.
AT>С уважением
AT>Андрей Тюрин
AT>
Здравствуйте and_tjurin, Вы писали:
AT>Файлы больше 4.2 Гб нормально записываются в Win95 и Win2000, но в Win98 возвращается ошибка (-3).
С 95ми аккуратнее — у моего знакомого файл как-то раз закольцевался через конец диска на мастер бут

естессно весь винт к чертям полетел.

... << RSDN@Home 1.0 alpha 12 РУЛИТ!!! >>
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Здравствуйте and_tjurin, Вы писали:
AT>Файлы больше 4.2 Гб нормально записываются в Win95 и Win2000, но в Win98 возвращается ошибка (-3).
AT>Это особенность Win98 или ошибка в программе?
AT>На Win98 стоит FAT32.
посмотри в МСДН —
Q250301
там пишут что
Win95, Win98 не поддерживают функции
LockFile, ReadFile, ReadFileEx, SetFilePointer, UnLockFile, WriteFile, WriteFileEx
для работы с файлами размеры которых — 4,294,967,295 bytes or larger