Показать сообщение отдельно

  #11  
Старый 23.06.2009, 21:52
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами: 10097606

Репутация: 3349


По умолчанию

как ни крути но даже на 64 битных системах получить боьше 4 гигов на проц не получится потому как прожка всё равно под 32 бита.
По этому и на 32 битках незя больше 2 гигов (теоретически) (если ядро негрузить за третим гигом.)

А чтобы юзать SetFilePointer для данных больше 4 гигов то вычесляется так:
Код:
int64 size;
size =  хзхзхзхзхзхз очень много короче
long hs,ls;
ulong hi_addr = NULL;
hs = size >> 32;
ls = (LONG) size;
if (hs) hi_addr = &hs; else hi_addr = NULL;

SetFilePointer (h, ls, hi_addr, dwMoveMethod)
т.е. если есть часть выше 32 бит, то зададим её адрес.
А вообще есть прекрасный флаг - передвинуться от текущей позиции а не от начала.
 
Ответить с цитированием