САБЖ нужно спроецировать файл в память и считать участок кода размером в несколько метров. Но до этого участка есть еще 12 Гб мусора. Как мне получить доступ к файлу, а точнее к тому месту, которое находится после 12 Гб... читал мсдн про функцию MapViewOfFile (можно там типа указать с какого смещения спроецировать), но функция каждый раз возвращает ноль. У кого есть кусок кода для работы с большими файлами - приведите плз...
Код (Text): hFile=CreateFile("HDD_IMAGE.ISO", GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0,0); hMap=CreateFileMapping(hFile, 0, PAGE_READONLY, 7, 0, 0); //получаем хэндл pMap=MapViewOfFile(hMap, FILE_MAP_READ, 3, 0, 0x100000); //хз, но возвращает 0
Magnum В CreateFileMapping передавай полный размер файла, а проецируй только нужную часть (не забыв выровнять смещение по гранулярности выделения памяти).
Bugaga - это не катит. После ZwMapViewOfSection, в случае ошибки вызывается RtlNtStatusToDosError(). Если NTSTATUS=STATUS_ACCESS_VIOLATION, то RtlNtStatusToDosError()=ERROR_NOACCESS(3E6h). Непонятно. Посмотри NTSTATUS: Код (Text): assume fs:nothing mov eax,fs:[TEB.LastStatusValue]
Все разобрался тема закрыта По непонятным причинам, смэпить файл не давало стороннее приложение (которым собсна и создавался откат) Сперва закрыл резидента потом в рку снял перехваты и все заработало всем спасибо за ответы
Clerk Почему это не катит? Не маппировать файл, а просто открыть его, поставить указатель на начало нужного блока и прочитать ReadFile.