![]() |
Проблемка с дампом оптических дисков
С обычными сд все ОК а с двд копирование может оборватся на средине :(
Код:
#include <windows.h> |
SetFilePointer(d,curpos,NULL,FILE_BEGIN);
если третий параметр NULL то она не работает с размерами больше 2гигов... Цитата:
Код:
__int64 myFileSeek (HANDLE hf, __int64 distance, DWORD MoveMethod) |
То есть смещение надо в моем случае совать в lpDistanceToMoveHigh ?
|
нет...
берешь функцию которую я написал и меняешь в своей проге это: unsigned long curpos=0; на это __int64 curpos=0; далее меняешь это SetFilePointer(d,curpos,NULL,FILE_BEGIN); на это myFileSeek(d,curpos,FILE_BEGIN); |
Цитата:
ЗЫ: ещё такой вопрос ,систем при дамп диска начинает лагать.Когда делаю дамп ультра исо лагов нет.В чем моя ошибка? |
"Но мне хотелось бы понять как просчитывается lpDistanceToMoveHigh" - RTFM (сам не знаю долго помню ипался когда работу с жестким на прямую делал...)
Лагает возможно из-за твоей кривизны... мне кажется у тебя с потолка берутся значения выделяемой памяти, непонятный бесконечный цикл.... ты что не можешь получить сначала размер файла потом выделить нужное количество памяти и прочесть его туда? еще посмотри по теме файлового маппинга в память... http://msdn.microsoft.com/en-us/library/aa366556(VS.85).aspx http://wasm.ru/article.php?article=1001013 я просто не знаю что тебе конкретно надо |
Выделить 4гига(при условии 64 разрядности ОС)? О_о А если двд не 5го а 8го формата попадется?Что тогда? :D
|
мда.... 4 гига это не предел... я тебе говорю смотри в сторону файл маппинга.
|
Цитата:
Насчет маппинга- надо спроецировать файл в память? |
_nic за тебя программу написать? RTFM!!!
http://wasm.ru/article.php?article=1001013 |
как ни крути но даже на 64 битных системах получить боьше 4 гигов на проц не получится потому как прожка всё равно под 32 бита.
По этому и на 32 битках незя больше 2 гигов (теоретически) (если ядро негрузить за третим гигом.) А чтобы юзать SetFilePointer для данных больше 4 гигов то вычесляется так: Код:
int64 size;А вообще есть прекрасный флаг - передвинуться от текущей позиции а не от начала. |
slesh имеешь ввиду FILE_CURRENT ?
ЗЫ:я так и непонял как нада выделить память под MapViewOfFile в моём случае :( ЗЫЫ: Код:
GetDiskFreeSpaceEx(dd,0,&TNOFB,0); |
| Время: 12:53 |