Например нужно поработать с файлом формата AVI весом полтора гига Кидаем его мышкой в окно программы Код (Text): invoke DragQueryFile,wParam,0,addr Buffer,sizeof Buffer Получаем хендл файла Код (Text): invoke CreateFile,addr Buffer,GENERIC_READ,0,0,3,80h,0 mov fHandle,eax Узнаём размер Код (Text): invoke GetFileSize,fHandle,0 mov dwSize,eax Выделяем память этого размера Код (Text): invoke HeapAlloc,hHeap,8,dwSize mov hBuf,eax Считываем файл в эту память Код (Text): invoke ReadFile,fHandle,hBuf,dwSize,addr dwTemp,0 По времени это примерно займёт секунд 20 или 30 Кто нибудь в курсе как в окне программы сделать какую нибудь индикацию которая бы отображала процесс загрузки
Полтора гига всосать в память единым куском - это сурово. Непрерывного и свободного места таких размеров в адресном пространстве может просто не найтись. Если программа реально предназначена для работы с файлами больше гигабайта, лучше пересмотреть алгоритм, чтобы они обрабатывались по частям.
Просто пробую сделать утилитку которая бы резала бы файл AVI на две части Не исключено что я иду не правильным путём (буду рад любым советам) Алгоритм у меня построен так: Если файл полтора гига то соответственно чтобы получить первую часть нужно в память загнать первую половину файла (это примерно 700 мегабайт) потом из этой памяти загнать данные в первый созданный файл Потом анологично выкачать вторую половину файла и загнать данные во второй созданный файл Поэтому если файл большой то приходится ждать Поэтому и хочется сделать хоть какую нибудь визуализацию процесса Это конечно не критично просто так полегче проходит ожидание